Skip to Content
CoursesAutomated Inbound02 Connect your lead sources

Connect Your Lead Sources

Outcome: every inbound source inventoried and feeding one table with a consistent schema and intact source attribution.

Surface
Sync GTM app
Level
Advanced
Uses
Import · integrations · webhooks
Credits
0
Prerequisite
Lesson 01's measured delay

Inventory first

Most teams have more inbound sources than they think, and the forgotten ones are where leads go missing.

SourceTypical route in
Demo request formWebhook or CRM sync
Contact formWebhook or email
Content downloadMarketing automation
Trial or free signupProduct database, webhook
Newsletter signupMarketing automation
Event or webinar registrationExport, sometimes webhook
Chat widget conversationIntegration
Inbound email to a shared aliasManual, usually
Partner referralsManual

Write down every one, with who owns it, where it currently lands, and how long it takes to reach a human. That last column is the finding.

The sources people forget — chat, shared inboxes, partner referrals — are often the highest-intent ones. Someone who opened a chat window and asked a question is closer to buying than someone who downloaded a PDF.


One table, one schema

Every source writes into the same table with the same columns. Sources differ in what they can provide, so the schema is the union, with a required core.

Required core

email the identifier source which form or channel submitted_at timestamp raw_payload everything else, kept as-is

Common optional

first_name, last_name, company, phone message what they typed utm_source, utm_medium, utm_campaign page_url where they submitted from

raw_payload matters more than it looks: sources add fields over time, and keeping the original submission means a field added last month is still recoverable even if nobody updated the mapping.


Email is the only reliable identifier

Everything else on a form is optional, mistyped, or missing.

  • Name is frequently absent or a single string.
  • Company is often blank, or the person types their product name.
  • Phone is frequently fake.
  • Email is the one field the person needs to be correct to get what they asked for.

So: validate the email at intake, derive the domain from it, and let enrichment fill the rest. Lesson 04 turns an email into a full profile.


Normalize at the boundary

Different sources supply the same data differently. Normalize on arrival, not later.

FieldNormalization
EmailLowercase, trim
NameSplit combined names, fix casing
CompanyTrim, strip legal suffix into its own column
DomainDerived from email, unless free-mail
PhoneE.164 where possible
TimestampOne timezone, stored consistently

A free-mail domain — gmail, outlook, and the rest — is not a company domain. Flag those rows; they need a different enrichment path, and they are often a different kind of lead.


Keep source attribution

Every row must carry where it came from, and it must survive to the CRM.

Without it you cannot answer which source produces qualified leads, which produces noise, or whether a change to a form helped. With it, lesson 09’s monitoring is straightforward.

Keep UTM parameters and the page URL too. “Submitted the demo form from the pricing page” is materially different intent from “submitted it from a blog post”.


Do this now

List every inbound source

Owner, current destination, time to human.

Define the required core schema

Email, source, timestamp, raw payload.

Map each source into it

Including the ones currently handled by hand.

Add normalization at the boundary

Flag free-mail domains

They need a different path.

Confirm attribution survives

Source, UTMs and page URL, all the way to the CRM.

Test each source with a real submission

Submit the form yourself and watch the row arrive.


Check your work

  • Every source is inventoried with an owner
  • All sources write into one table with the same core schema
  • Raw payload is retained
  • Free-mail domains are flagged
  • You submitted a real test through each source and saw it land

Where this breaks

A source that silently stops delivering looks exactly like a quiet week. A form that broke after a website change, an integration whose credentials expired, a webhook pointing at an old endpoint — none of these produce an error anyone sees, and the leads simply stop. Alert on zero submissions from any source that normally produces some, and check the per-source counts in lesson 09’s monitoring.


Further automation

Once every source lands in one table, the downstream pipeline is written once rather than per source. That is the real reason for the single-schema rule: enrichment, scoring, routing and follow-up all become source-agnostic, and adding a new form later requires only a mapping.


Next lesson

03 — Webhook intake, getting rows to arrive on submission rather than on a sync.

Reference for this lesson: Import, Webhooks, CRM integrations, Workspace integrations.