Lead Created
Fire the lead_created event whenever a visitor takes an action that indicates business interest — submitting a contact form, requesting a product demo, requesting a quote, asking for a callback, downloading gated content, or any equivalent form-based capture. This is the foundational top-of-funnel conversion event for any lead-generation business.
Fire the event once per form submission, after the submission is confirmed successful (server validated, lead record created). Always include a unique event.id (your internal lead/submission ID) so destinations can deduplicate retries and so server-side reporting matches CRM records. Use event.value to express the estimated monetary value of the lead — even an approximate value enables value-based bidding in Google Ads and Meta.
This event is the DATA Reshape equivalent of the standard lead/form-submit event in every major advertising and analytics platform — push it once and Reshape fans it out to every connected destination with the correct platform-specific name and field mapping, so you do not need to fire gtag, fbq, ttq or other tracking function calls in parallel.
- Google Analytics 4 —
generate_lead(withvalue,currency,lead_source). - Google Ads — conversion tracking with
transaction_idfromevent.id, plus Enhanced Conversions from theuserobject. - Meta Pixel / Meta Conversions API —
Lead(withvalue,currency,content_name,content_category). - TikTok Pixel / TikTok Events API —
SubmitForm(withvalue,currency); some configurations also fireContact. - Other connected destinations — mapped automatically based on each destination's native schema.
A single Reshape event can produce one or more native events per destination, with different characteristics depending on each website's destination configuration (active pixels, server endpoints, event-mapping rules).
Complete Reference
The lead_created event accepts the following objects and fields. Required fields must always be present in the payload — everything else is optional but strongly recommended. The user object is what makes the lead actionable in your downstream destinations: even just an email enables Advanced Matching in Meta, Enhanced Conversions in Google Ads, Advanced Matching in TikTok and equivalent identity flows in other connected destinations.
event object required
name string required
Use only static value lead_created for event.name. DATA Reshape maps this to generate_lead (GA4), Lead (Meta), and SubmitForm (TikTok) automatically.
name: "lead_created"
value number required
Estimated monetary value of the lead. Used for value-based bidding and ROAS computation across destinations.
value: 250.00
currency string required
Currency code, ISO 4217 three-letter format.
currency: "USD"
exchange_rate number
Default is 1.
exchange_rate: 1
id string required
Unique lead/submission ID from your system. Required for deduplication across destinations.
id: "lead_abc123"
properties object recommended
Custom Event Properties Examples
- Order canceled
- B2B Lead
- Subscription Service
properties: {
cancel_reason: "returning",
}
properties: {
lead_status: "converted",
sales_stage: "proposal"
}
properties: {
subscription_tier: "premium",
billing_cycle: "annual",
trial_user: "false",
renewal_date: "2025-06-30",
support_level: "priority",
usage_frequency: "daily"
}
context object
url string required-if-applicable
Collected automatically for standard websites. Required only for SPA applications where URL changes don't trigger automatic page context updates.
url:"https://example.com/products/prod_abc123?utm_source=example"
URL Parameter Sensitivity: Be mindful of sensitive information in URLs. Query parameters may contain personal identifiers, session tokens, or private information that should be handled according to privacy regulations.
page_type string recommended
Type of page (product, home ...)
page_type: "product"
environment string recommended
Allowed values: prod, dev
environment: "prod"
user object required
The user identity captured in the form. Email at minimum, plus phone, name and any other captured fields. These drive Advanced Matching for Meta and TikTok, Enhanced Conversions for Google Ads, and identity reconciliation in other connected destinations. View complete User Object documentation
id string recommended
Unique customer identifier in your system.
id: "cust_abc123"
email string recommended
Customer email address in plaintext. Do not send pre-hashed values — DATA Reshape automatically normalizes and hashes before sending to destinations.
email: "[email protected]"
phone string recommended
Customer phone number in E.164 format (plaintext). Do not send pre-hashed values — DATA Reshape automatically normalizes and hashes before sending to destinations.
phone: "+10000000000"
first_name string recommended
Customer first name
first_name: "Example First Name"
last_name string recommended
Customer last name
last_name: "Example Last Name"
country string
Country name or ISO country code
country: "US"
region string recommended
State, province, or region name
region: "Example Region"
city string recommended
City or locality name
city: "Example City"
street string
Street address including number
street: "123 Sample Street"
postal_code string
Postal code or ZIP code
postal_code: "00000"
orders_total_number number recommended
Cumulative number of orders placed by this user
orders_total_number: 5
orders_canceled_number number recommended
Cumulative number of orders placed and canceled by this user
orders_canceled_number: 0
orders_total_value number recommended
Cumulative lifetime user orders value (decimal format: 2500.50)
orders_total_value: 1234.99
orders_refunded_value number recommended
Cumulative lifetime user orders value canceled (decimal format: 2500.50)
orders_refunded_value: 250.99
predicted_value number
Predicted lifetime value of a customer for your business
predicted_value: 100.99
created_at number recommended
Timestamp in milliseconds since Unix epoch representing the first time the user was recorded
created_at: 1754926521690
properties object recommended
Custom Customer Properties Examples
Use the properties object to store custom user attributes, with property names defined by each business as needed, that enable advanced segmentation, personalization, and analytics across your marketing campaigns.
- E-commerce Customer
- B2B Lead/Customer
- Subscription Service
- Content Platform
properties: {
customer_type: "returning",
membership_level: "platinum",
preferred_category: ["electronics", "fashion"],
last_purchase_date: "2024-12-15",
average_order_value: "350.00",
payment_method_preference: "card",
registration_date: "2023-06-15"
}
properties: {
company_size: "enterprise",
industry: "fintech",
job_title: "marketing_director",
decision_maker: "true",
budget_range: "50000-100000",
lead_source: ["linkedin", "webinar"],
qualification_status: "qualified",
sales_stage: "proposal"
}
properties: {
subscription_tier: "premium",
billing_cycle: "annual",
feature_usage: ["analytics", "reporting", "api"],
trial_user: "false",
renewal_date: "2025-06-30",
support_level: "priority",
usage_frequency: "daily"
}
properties: {
content_preferences: ["technology", "business"],
engagement_level: "high",
newsletter_subscriber: "true",
social_media_follower: "true",
content_consumption: "premium",
device_preference: ["mobile", "desktop"],
timezone: "Example/Timezone"
}
Examples
The examples below show how to push lead_created for four common form-capture scenarios — Contact Form, Demo Request, Quote Request and Callback Request — each with representative event properties for that scenario, plus an additional Minimal tab with only the required fields.
- Contact Form
- Demo Request
- Quote Request
- Callback Request
- Minimal
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "lead_created",
"value": 150.00,
"currency": "USD",
"exchange_rate": 1,
"id": "lead_abc123",
"properties": {
"lead_source": "contact_form",
"form_name": "contact_us",
"form_location": "footer",
"message_topic": "general_inquiry"
}
},
"context": {
"url": "https://example.com/contact",
"page_type": "contact",
"environment": "prod"
},
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"properties": {
"lead_quality": "unknown",
"acquisition_channel": "organic_search"
}
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "lead_created",
"value": 1500.00,
"currency": "USD",
"exchange_rate": 1,
"id": "lead_abc123",
"properties": {
"lead_source": "demo_request",
"form_name": "request_demo",
"demo_type": "live_walkthrough",
"preferred_date": "2026-06-15",
"company_size": "50-200",
"use_case": "marketing_automation"
}
},
"context": {
"url": "https://example.com/request-demo",
"page_type": "demo_request",
"environment": "prod"
},
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"predicted_value": 5000.00,
"properties": {
"company": "Example Company Inc.",
"job_title": "Example Job Title",
"industry": "software",
"lead_quality": "high"
}
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "lead_created",
"value": 750.00,
"currency": "USD",
"exchange_rate": 1,
"id": "lead_abc123",
"properties": {
"lead_source": "quote_request",
"form_name": "request_quote",
"quote_for": "annual_subscription",
"estimated_volume": "10000",
"billing_preference": "annual"
}
},
"context": {
"url": "https://example.com/pricing/request-quote",
"page_type": "pricing",
"environment": "prod"
},
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"predicted_value": 3500.00,
"properties": {
"company": "Example Company Inc.",
"job_title": "Example Job Title",
"company_size": "200-500"
}
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "lead_created",
"value": 200.00,
"currency": "USD",
"exchange_rate": 1,
"id": "lead_abc123",
"properties": {
"lead_source": "callback_request",
"form_name": "request_callback",
"preferred_time": "weekday_afternoon",
"preferred_language": "en"
}
},
"context": {
"url": "https://example.com/contact/callback",
"page_type": "contact",
"environment": "prod"
},
"user": {
"id": "cust_abc123",
"email": "[email protected]",
"phone": "+10000000000",
"first_name": "Example First Name",
"last_name": "Example Last Name",
"country": "US",
"properties": {
"lead_quality": "medium",
"acquisition_channel": "paid_search"
}
}
});
window.reshape = window.reshape || [];
reshape.push({
"event": {
"name": "lead_created",
"value": 150.00,
"currency": "USD",
"id": "lead_abc123"
},
"user": {
"email": "[email protected]"
}
});
Custom properties (event.properties, user.properties, products[*].properties) are fully processed server-side. On browser-side pixels and tags, only a subset may be available. Server-side processing can also enrich the outgoing payload with additional parameters derived from context and data quality.
Best Practices
- Always provide
event.id— your internal lead/submission ID. Used for cross-destination deduplication and for matching CRM records when leads are uploaded as offline conversions later. - Fire only on confirmed submission — wait until the lead record is created server-side; never fire on button click before validation succeeds.
event.valueshould be your estimated lead value — even an approximate value enables value-based bidding (Google Ads tCPA/tROAS, Meta value optimization).- Include the
userobject with at least an email — this enables Advanced Matching in Meta and TikTok, Enhanced Conversions in Google Ads, and identity reconciliation in other connected destinations. Server-side firing (post-submit webhook) is the most reliable. - Capture lead source in
properties—lead_sourceandform_nameare critical for attribution and downstream lead-scoring. - Fire server-side from your form handler — client-side capture catches the marketing context; a parallel server-side push from the form handler ensures the lead is recorded even if the user closes the browser or uses an ad blocker. DATA Reshape deduplicates via
event.id.