Skip to main content

Building a Simple Event-Driven Application with Datadog Workflows

Workflows, DevOps, AI, DevOps workflows, code Postman Dynatrace GitLab value Argo Atlassian database Sqlcommenter flow metrics VSM low-code PostgreSQL database JSON
Workflows, DevOps, AI, DevOps workflows, code Postman Dynatrace GitLab value Argo Atlassian database Sqlcommenter flow metrics VSM low-code PostgreSQL database JSON

Back in October 2022, I wrote a short blog post explaining how I automated our Datadog Marketplace sales cycle using a few AWS services and my first-ever Golang program. That basic, event-driven system saved our sales team several hours a week by replacing a manual process with something far more efficient.

Even though the original setup worked well and ran reliably for a couple of years, it still required ongoing maintenance — such as upgrading Go versions, fixing minor issues from those upgrades and updating the HubSpot SDK I built when their APIs changed. It wasn’t broken, but it was becoming a bit of a time sink. With Datadog Workflows becoming more robust and available, I figured it was time for a refresh. Why not see what it could do?

Breaking Down the Old Flow

The original flow followed a pretty typical event-driven architecture pattern: Event producers, a router and a consumer.

Producer: The customer’s Datadog instance, which triggered an event when a trial started. Email (via AWS SES) also played a supporting role here by capturing trial initiation messages.

Router: An SNS topic in AWS, which fanned out the messages to the consumer.

Consumer: A Lambda function that parsed the message and interacted with HubSpot’s APIs.

While this system did its job, it was fairly code-heavy and required occasional tweaks, especially around regex parsing and SDK maintenance.

Rebuilding With Datadog Workflows

To recreate the same logic in Datadog, I first needed a way to ingest emails. Luckily, Datadog has a built-in (and often overlooked) feature called the ‘Email Events API’. This lets you generate a unique email address that pipes incoming messages directly into your Datadog instance as events. Between that and the customer triggering a trial via the Marketplace, I had my event producers.

Next came ‘parsing’ those events. This was a huge improvement over the AWS version.

Instead of hand-rolling the regex for every single attribute, I used Datadog’s ‘Grok Parser’ and built-in pipeline processors to normalize the events. This made things more maintainable and much easier to evolve. A few additional processors helped clean up and standardize some attributes for downstream use.

You could argue that this event pipeline acts as both a consumer (processing the raw event) and a producer (outputting a normalized version of the event for downstream systems). Either way, it simplified a lot of the logic I previously had to write in code.

Routing Events in Datadog

At the time of writing, Datadog Workflows can’t be triggered directly from an ingested event. To work around this, I set up a monitor that looks for specific attributes — events from a certain service and a specific @title pattern. It also ignores trials that come from Datadog Partner instances.

This monitor acts as the router, forwarding qualified events to a Datadog Workflow.

The New Consumer: Datadog Workflow

Just like the old Lambda function, the Workflow is now the consumer. It takes the normalized event attributes and performs a sequence of steps to create objects in HubSpot — contacts, deals, products and line items. If the process succeeds, it sends a message to Slack with a link to the new deal in HubSpot. If anything fails, it also notifies the Slack channel with error details.

Final Thoughts

What started as an experiment turned into a functional and surprisingly low-maintenance solution. By using Datadog Workflows, I gained a simpler parsing mechanism and a flow that’s easier for our sales ops team to understand and update themselves. Since it’s a low-code solution, they can tweak it without touching infrastructure or digging into code.

Of course, there are trade-offs. Datadog Workflows aren’t meant to replace full-fledged serverless architectures, especially when it comes to high traffic or strict latency requirements. But for a system like ours, with moderate volume and no SLA constraints, it works just fine — and it was fun to build.



from DevOps.com https://ift.tt/JMsEZfr

Comments

Popular posts from this blog

Rochelle Walensky on the Rocky Road to Normal

Rochelle Walensky on the Rocky Road to Normal By David Wallace-Wells from NYT Opinion https://ift.tt/0A5Wx6r internal-sub-only-nl, Coronavirus (2019-nCoV), Vaccination and Immunization, Rumors and Misinformation, Centers for Disease Control and Prevention, Walensky, Rochelle

LocalStack Acquires WonderTwin AI to Gain SaaS App Emulation Platform

LocalStack this week revealed it has acquired WonderTwin AI , a provider of an emulator of software-as-a-service (SaaS) applications that is used to build custom applications for those platforms. Colin Neagle, vice president of marketing for LocalStack, said the emulators WonderTwin AI has developed will be integrated into the company’s namesake emulation platform that application development teams currently rely on to emulate cloud services provided by Amazon Web Services (AWS). LocalStack and WonderTwin AI make it possible for application developers working on a local machine to build applications that are designed to be deployed on some type of external cloud platform using a local sandbox to test and validate integrations without having to connect to a service or build against a live application programming interface (API). That issue has been especially critical in an era where more code will soon be generated by AI coding agents that may for one reason or another circumvent the...

Microsoft Brings the Azure SDK for Rust to General Availability

Microsoft has moved the Azure SDK for Rust out of beta and into general availability, giving Rust developers a stable, production-ready way to connect to core Azure services. The release covers Core, Identity, Key Vault (Secrets, Keys, and Certificates), and Storage (Blobs and Queues), built around the same design patterns already used in the .NET, Java, JavaScript, Python, Go, and C++ SDKs. The announcement came as part of Microsoft’s May 2026 Azure SDK release, and was detailed separately in a post from Ronnie Geraghty, product manager for the Azure SDK. He framed the milestone with a simple scenario: a Rust service that signs in with Microsoft Entra ID, retrieves a signing key from Key Vault, pulls work items from a Storage Queue, and writes the results to Blob Storage. Every piece of that chain is now stable. That stability matters more than it might sound. A beta SDK is fine for experimentation, but most engineering teams won’t put it in front of production traffic. W...