Lead Form Sources
Source - Vendo imports paid-platform lead form submissions into a shared leads schema for identity, routing, and downstream activation.
The five lead-form sources are separate app connections in the catalog, but they all write the same normalized output shape.
Supported Platforms
| Platform | App type | Source status |
|---|---|---|
| Google Ads Lead Forms | leads_google_ads | Available |
| Meta Ads Lead Forms | leads_meta_ads | Available |
| TikTok Lead Forms | leads_tiktok_ads | Available |
| LinkedIn Lead Forms | leads_linkedin_ads | Available |
| Snap Lead Gen Forms | leads_snap_ads | Available |
What Vendo Imports
Each connector imports one stream: leads.
| Data | Description |
|---|---|
| Lead identity | Email, phone, name, company, title, location, and other form answers when provided by the platform |
| Form context | Platform lead ID, form ID, form name, and submitted time |
| Campaign context | Campaign, ad, creative, and platform click ID where available |
| Custom questions | Custom form answers stored as JSON in custom_fields |
| Raw payload | Original provider response stored in raw_response for audit/debugging |
All five connectors normalize records to the shared raw_leads schema, then transform them into the production leads table.
Shared Lead Fields
| Field group | Examples |
|---|---|
| Identity | email, phone, full_name, first_name, last_name |
| Work context | company, job_title |
| Location | city, state, zip_code, country |
| Campaign context | campaign_id, campaign_name, ad_id, ad_name, click_id |
| Form context | lead_id, form_id, form_name, created_time, platform |
| Sync metadata | insert_id, job_id, raw_response, extracted_at |
The dedupe key is insert_id. For most providers it is derived from the platform and lead ID; providers with form-scoped IDs include the form ID.
Platform Differences
| Platform | Fetch shape | Cursor |
|---|---|---|
| Google Ads | Google Ads API SearchStream over lead_form_submission_data | submission_date_time |
| Meta Ads | Discover lead forms, then fetch leads for each form | created_time |
| TikTok | Lead API page fetches over a date range | create_time |
| Lead form responses filtered by sponsored account | submittedAt | |
| Snap | Discover lead gen forms, then fetch form leads | created_at |
Credentials
The staging launch contracts require platform credentials for each lead source.
| Platform | Required fields |
|---|---|
| Google Ads | Developer token, OAuth client ID/secret, refresh token, customer ID |
| Meta Ads | Ad account ID and Marketing API access token |
| TikTok | Advertiser ID and access token |
| Ad account ID and OAuth access token | |
| Snap | Ad account ID and OAuth access token |
Some platforms also accept refresh tokens and OAuth app credentials for token refresh.
Setup
- Navigate to Sources in the Vendo app
- Select the lead-form source for the ad platform you want to connect
- Complete the platform OAuth or credential step
- Select Lead Form Submissions as the source stream
- Save the source and run the first sync
Verify Setup
- Confirm the source status is Active
- Run a manual sync
- Query the lead table for the connected source
- Confirm new rows include
lead_id,platform,created_time, and at least one usable identity field - Check
custom_fieldsfor answers to non-standard questions
Troubleshooting
| Symptom | What to check |
|---|---|
| No leads import | Confirm the ad account has active lead forms and recent submissions |
| Duplicate-looking rows | Check insert_id; provider-specific lead IDs may be scoped by form |
| Contact fields are empty | Confirm the platform form asks for the field and the lead gave consent |
| Custom questions are missing | Check custom_fields; non-standard questions are stored there |
Last updated on