Create Event Export
Events
Create Event Export
Create an asynchronous export job to generate a downloadable file of events
POST
Create Event Export
Overview
This endpoint creates an asynchronous export job that generates a downloadable file containing events data. The export is processed in the background and returns a presigned download URL when complete. Use this endpoint when you need to extract large volumes of event data (10,000+ events) efficiently. For real-time needs, use the List Events endpoint instead.When to use exports: See Exports vs Pagination to understand when to use exports versus the paginated list endpoint.
Request Body
Required Parameters
The date to export events for in
YYYY-MM-DD format. The date is interpreted in your space’s timezone and exports events from 00:00:00 to 23:59:59 for that day.Limit: Maximum 1 day per export.Example: 2024-01-15Optional Parameters
Determines whether to report metrics by contact or company level.Options:
profile- Contact-level events (default)company- Company-level events
Filter results to specific event names. Defaults to all events when omitted.Limits: Minimum 1, maximum 10 event names. Duplicate values are not allowed.Values:
add_payment_infoadd_to_cartcomplete_registrationcontactinitiate_checkoutlead_generatedpurchaseschedulesign_upstart_trialsubmit_applicationsubscribeupsell_purchaseview_contentwebinar_registration
custom_event_1 through custom_event_50.Filter events by traffic sources. When provided,
attribution_model and attribution_window become required.Limits: Minimum 1, maximum 15 sources. Duplicate values are not allowed.Available sources
Available sources
Paid Ads:
facebook_ads, google_ads, linkedin_ads, tiktok_ads, youtube_ads, instagram_ads, bing_ads, yahoo_ads, pinterest_ads, reddit_ads, snapchat_ads, telegram_ads, twitch_ads, x_ads, quora_ads, duckduckgo_adsOrganic:
facebook_organic, google_organic, linkedin_organic, tiktok_organic, youtube_organic, instagram_organic, bing_organic, yahoo_organic, pinterest_organic, reddit_organic, snapchat_organic, telegram_organic, twitch_organic, x_organic, quora_organic, duckduckgo_organic, messenger_organic, brave_organic, threads_organicAI Platforms:
ai_chat_gpt, ai_perplexity, ai_copilot, ai_claude, ai_grok, ai_gemini, ai_deepseekOther:
email, sms, referral, direct, shop_app, substack, capterra, trustpilot, g2, yelpAttribution model to use for filtering events. Required when
sources is provided.Options:first_touch- First interaction attributionlast_touch- Last interaction attributionlinear- Equal credit across all touchpointsfirst_platform_touch- First paid platform touchlast_platform_touch- Last paid platform touchlinear_paid- Linear attribution across paid touchpoints onlyu_shaped- 40% first, 40% last, 20% middle touchpointslast_non_direct_touch- Last touch excluding direct traffic
Attribution lookback window in days. Required when
sources is provided.Options: 0 (LTV), 1, 7, 14, 30, 60, 90Specify which fields to include in the exported file.Limits: Minimum 1, maximum 20 fields. Duplicate values are not allowed.Note:
id and event_time_utc are always included in the export. When sources are provided for attribution, touchpoint_id is also always included.Available fields:profile_id- Contact profile identifiercompany_id- Company identifierspace_id- Space identifierevent_name- Event nameconfigured_name- The configured name of the event. For custom events (custom_event_1throughcustom_event_50), this is the user-configured name. For standard events, this equalsevent_name.amount- Transaction amount (with attribution, this is the partial amount credited to the touchpoint)is_upsell- Upsell flagad_id- Platform-specific ad identifier (requiressourcesto be provided)ad_name- Ad name from the ad platform (requiressourcesto be provided)adset_id- Platform-specific ad set identifier (requiressourcesto be provided)adset_name- Ad set name from the ad platform (requiressourcesto be provided)campaign_id- Platform-specific campaign identifier (requiressourcesto be provided)campaign_name- Campaign name from the ad platform (requiressourcesto be provided)account_id- Platform-specific ad account identifier (requiressourcesto be provided)account_name- Ad account name from the ad platform (requiressourcesto be provided)order_id- Order identifierorder_name- Order nameevent_url- The full URL where the event occurred
id- Event identifier (always included)event_time_utc- Event timestamp in UTC (always included)touchpoint_id- Touchpoint identifier (automatically included when sources are provided)source- Traffic source (automatically included when any ad hierarchy field is requested:ad_id,ad_name,adset_id,adset_name,campaign_id,campaign_name,account_id,account_name)
Response
Success Response (202 Accepted)
Unique identifier for the export job. Use this to check status with the Get Event Export endpoint.
Current status of the export. Will be
queued immediately after creation.Error Response
Error description explaining what went wrong
Export File Format
Completed exports are delivered as gzipped NDJSON (Newline-Delimited JSON) files. Each line contains a complete JSON object representing one event record.Example Requests
Status Codes
| Status Code | Description |
|---|---|
| 202 | Export job created and queued for processing |
| 401 | Missing or invalid API key |
| 403 | API key doesn’t have permission or subscription is inactive |
| 422 | Invalid parameters provided (check error message for details) |
| 429 | Too many requests - rate limit exceeded. See Rate Limiting |
Next Steps
After creating an export, you need to poll the Get Event Export endpoint to check the status and retrieve the download URL when ready.Notes
- Rate Limit: This endpoint has a limit of 5 requests per minute per Space. See Rate Limiting for details.
- Processing Time: Exports typically complete within seconds to a few minutes depending on data volume
- Max Date Range: Each export can only contain one day of data (00:00:00 to 23:59:59 in your space’s timezone)
- Export Capacity: Can handle 100,000+ events per day efficiently
- Status Checking: Use the Get Event Export endpoint to check status (30 requests/min limit)
- Attribution Breakdown: With multi-touch attribution models (linear, u_shaped, linear_paid), each event may generate multiple rows in the export - one per attributed touchpoint. Each row contains the touchpoint’s partial credit (e.g., a $100 conversion with 4 touchpoints returns 4 rows with $25 each). Single-touch models (first_touch, last_touch) return one row per event.
- When
sourcesare not provided, all events in the specified date are exported without attribution filtering - The ad hierarchy fields (
ad_id,ad_name,adset_id,adset_name,campaign_id,campaign_name,account_id,account_name) requiresourcesto be provided. Requesting higher-level hierarchy fields (such asaccount_name) may increase processing time compared to requesting only lower-level fields (such asad_name), so selecting only the fields you need will generally be more efficient. - By default, only
idandevent_time_utcare included in the export (plustouchpoint_idwhen using attribution). Specify additional fields as needed to minimize file size. - File Expiration: Download URLs expire after 15 minutes for security. Retrieve the file promptly after completion.
- Security: Export files use UUID-based filenames with time-limited presigned URLs to prevent unauthorized access