MARKETING

Ad-Spend Webhook Ingest with UTM Normalization

Receives daily ad-spend exports via webhook, normalizes and validates the UTM campaign tags against a canonical naming convention.

CategoryMarketing
Enginesim
Difficultyintermediate
Triggerwebhook
Steps5
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerInbound spend payload webhook receivedHTTP webhook
  • LogicNormalize UTM tags and validate required fields
  • ActionInsert clean rows into warehouse spend tableGoogle BigQueryBigQuery
  • ActionWrite malformed rows to rejects tableGoogle BigQueryBigQuery
  • OutputPost accepted vs rejected counts to SlackSlack

What it does

This workflow is the ingestion front door for the whole reconciliation system. It accepts ad-spend payloads pushed from your ad platforms or an ETL job, normalizes inconsistent UTM tags (case, spacing, known aliases) to a canonical convention, validates required fields, and writes the cleaned rows into the warehouse spend table that every downstream rollup reads.

When to use it

Use it when spend arrives in messy, inconsistent formats and bad UTM tags are corrupting your reconciliation. Standardizing at ingest means every report downstream tells the same truth.

How it works

An inbound webhook receives the spend payload. A logic step normalizes UTM fields against an alias map and validates that campaign, date, and spend are present and well-formed; malformed rows are diverted. Clean rows are inserted into the BigQuery spend table with a load timestamp. Any rows that failed normalization are written to a rejects table and a count of accepted versus rejected rows is posted to Slack so data issues surface immediately.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect HTTP webhookTrigger any URL on agent actions.
  2. 2
    Connect BigQueryDatasets, queries, schemas.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.