If you run ads on a platform that WorkMagic does not natively integrate with, you can still include its spend data in WorkMagic by setting up your own data flow. This allows WorkMagic to show your full cross-channel ad spend in dashboards and include these platforms in MMM and lift test analysis.
Common use cases include: CTV/streaming platforms (e.g., Vibe, Tatari if not natively connected), programmatic platforms, podcast advertising, affiliate networks, or any custom channel where native API integration is unavailable.
For natively supported platforms (Meta, Google, TikTok, Snapchat, Pinterest, Microsoft, Amazon Ads, Klaviyo, Omnisend, Tatari, Axon, Universal Ads, LinkedIn, Roku, Reddit, Walmart Connect), use the native connection instead — see the relevant article in this section.
Part 1: Prepare Your Marketing Data
Before uploading, make sure your data is formatted correctly. Records that don't match the required format will be rejected. You can download the official template directly and fill it in — see the template link in Settings > Data Integration > Marketing Data > Google Sheet, or directly open the template here.
(a) Required Fields
Field | Description |
| Frequency of the report, Date in |
|
|
| The unique ID of the advertising account as it appears in your platform's reporting. |
| The name of the advertising account as it appears in your platform's reporting. |
| The top-level channel — must match exactly what you entered in your Data Scope. (Guideline of Data Scope, please see Part 2(a)) |
| The unique ID of the campaign. Together with |
| The unique ID of the ad set / ad group. If your data is at the campaign level only, set this field to |
| The unique ID of the individual ad creative. If your data is not at the ad level, set this field to |
| Aggregate spend for the period in your account currency. Enter as a numeric value with no currency symbols (e.g., |
| (Optional) Number of clicks |
⚠️Important: The fields marked as primary keys (date_code, date_granularity, account_id, account_name, ads_platform, campaign_id, adset_id, ad_id) together form a unique record key. Before uploading, make sure your data has no duplicate rows across this combination. If you have multiple rows with the same key, aggregate them into a single row by summing ad_spend, impressions, clicks, ads_sales, and ads_orders before uploading. If duplicate keys are uploaded, only the last record will be kept and earlier ones will be overwritten.
(b) Optional Fields
Field | Description |
| The campaign objective or optimization goal as set in the platform (e.g., |
| Name of the campaign as it appears in your platform's reporting. |
| Name of the ad set / ad group. |
| Name of the individual ad creative. |
| Number of times ads were displayed, as reported by the platform. |
| Number of times ads were clicked, as reported by the platform. |
| Total sales attributed to ads, as reported by the platform. |
| Total number of orders attributed to ads, as reported by the platform. |
| Custom metric key-value pairs for additional analysis (e.g., |
Optional fields can be left blank without causing records to be rejected. Including impressions and clicks enables richer reporting in the Overview and Channel Attribution dashboards.
(c) Sample Data and Payload
The following shows the sample data in tabular format for your reference. This format is only applicable for a Google Sheet data sync. All other file deposit approaches require a JSON payload
{
"date_code": "2026-05-20",
"date_granularity": "DAILY",
"account_id": "act_tk_9982105",
"account_name": "Nebula Gaming Global",
"ads_platform": "customAdsPlatform",
"campaign_id": "cmp_tk_summer_launch",
"campaign_name": "Summer DLC Launch - Traffic",
"adset_id": "adset_tk_gamers_us",
"adset_name": "US / Male 18-34 / RPG Interest",
"ad_id": "cr_tk_video_005b",
"ad_name": "Video_Gameplay_Teaser_v2",
"campaign_type": "outcome traffic",
"ad_spend": 3250.8,
"impressions": 450000,
"clicks": 8500,
"ads_sales": 0,
"ads_orders": 0,
"extended_metrics": {
"video_views_6s": 210000,
"video_views_30s": 19000
}
}
Part 2: Upload Your Data
(a) Add the Platform to Your Data Scope
Every platform you upload data for must first be registered in your Data Scope.
Go to Settings > Platform Integration > Data scope & Feature readiness.
Look for the Marketing channels section.
Click Edit and check the relevant Ad channels or enter the platform name exactly as you want it to appear in dashboards (e.g., "The trade desk", "Podcast Ads", "Affiliate Network").
The platform name indicated in your data scope should match exactly with the ads_platform field in your data feed.
Save your changes.
(b) Choose Your Upload Method
Navigate to Settings > Data Integration > Marketing Data and select your preferred upload method.
Method | Best For |
Google Sheets | Small to medium datasets, non-technical users |
Amazon S3 | Batch file uploads via AWS |
Google Cloud Storage | Batch file uploads via GCP |
Snowflake | Export from Snowflake data warehouse |
BigQuery | Export from BigQuery data warehouse |
Method 1: Google Sheets (recommended for non-technical users)
Select Google Sheets as your upload method.
Click the template link and select Make a copy to your Google Drive.
Fill in your spend data following the required field format above.
Share view access with:
[email protected]Paste the sheet URL into WorkMagic and click Confirm.
Only the first tab of the spreadsheet (gid=0) is processed. The full sheet is re-synced on each scheduled run.
Sync frequency: WorkMagic syncs your sheet daily on a scheduled run. If you make changes to the sheet, the updated data will be picked up on the next hourly run.
How we handle your data: Once processed, your data is stored in our database independently of Google Sheets. Removing it from the sheet won't delete it here. To update existing records, re-upload with the same unique key (date_code x ads_platform x campaign_id x adset_id x ad_id) — duplicates will be automatically deduplicated and overwritten with the new values.
Method 2: Amazon S3
Option A — Use WorkMagic's S3 bucket:
Select Amazon S3 and choose WorkMagic's bucket.
In the AWS Console, go to IAM > Users and get your IAM User ARN.
Enter your IAM User ARN into WorkMagic and click Confirm.
Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)
Upload your spend data files to the designated bucket and path.
Option B — Use your own S3 bucket:
Select Amazon S3 and choose Your own bucket.
Provide WorkMagic with your S3 bucket name and the necessary IAM credentials.
Install AWS CLI.
Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)
Configure a sync script to upload spend data files to the designated bucket and path.
Method 3: Google Cloud Storage (GCS)
Option A — Use WorkMagic's GCS bucket:
Select Google Cloud Storage and choose WorkMagic's bucket.
WorkMagic's bucket name:
workmagic-inbound-dataCreate a Google Service Account in your Google Cloud project and share the account with us for authorization.
Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)
Upload files to the WorkMagic bucket using the GCS SDK or gsutil.
Option B — Use your own GCS bucket:
Select Google Cloud Storage and choose Your own bucket.
Create a Google Service Account in your Google Cloud project and share the account with us for authorization.
Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)
WorkMagic will provide an assigned GCS path. Use
gsutil rsyncto sync files from your bucket to that path on a recurring schedule.
Method 4: Snowflake
Select Snowflake as your upload method.
WorkMagic will provide the target S3 export path and credentials in the setup panel.
In Snowflake, use the
COPY INTOcommand to export your spend data to the specified S3 location.Transform your Snowflake data table into a JSON.gz payload, following the structure indicated in section Part 1(c)
Schedule the export to run on a recurring basis (e.g., daily).
Method 5: BigQuery
Select BigQuery as your upload method.
WorkMagic will provide the target GCS export path and credentials.
Transform your BigQuery data table into a JSON.gz payload, following the structure indicated in section Part 1(c)
In BigQuery, use
EXPORT DATAor a scheduled query to export your spend data to the specified GCS bucket.Schedule the export to run on a recurring basis.
(c) Validate Your Data Before Uploading
Before uploading, you can use our data validation tool to check that your file is correctly formatted and free of errors.
This tool checks for common issues such as missing required fields, incorrect date formats, unrecognized geo codes, and duplicate primary keys — so you can catch and fix problems before they reach the platform.
(d) Verify Your Upload
After uploading, you can confirm that your data has been successfully ingested using the Debug Tool.
Go to Settings > Data Integration > Marketing Data > Upload Data.
Click the Debug Tool tab (next to Instructions).
Scroll down to find Data Sync Processing Report — note this is separate from the Data Accuracy report.
Select the relevant time range.
Click Check.
You will see a detailed report of your sync, including which records were processed, skipped, or rejected. If any records were rejected, the report will show the reason — refer back to Part 1 to correct your data and re-upload.
Where Imported Spend Data Appears
Once uploaded, your data will appear across the following areas. Allow up to 24 hours after a successful upload for data to appear.
Destination | What You'll See |
Omni channel Attribution Dashboard | Imported platform shown as a separate channel row with spend, impressions, and clicks (if provided) in Channel attribution; Imported platforms and campaigns are shown in Ads attribution dashboard. |
MMM | Imported platform included as an input and output channel in Marketing Mix Modeling |
Lift Tests | Imported platform available as a testable channel when setting up a new lift test |
Note: Imported marketing platform data is not yet included in Overview dashboard.
FAQ
Q: Does uploading spend data give me MTA attribution for this platform?
A: Yes. Our model based attribution model (incrementality adjusted attribution and data-driven attribution) provides attribution for imported ad platforms.
Q: How often should I upload spend data?
A: Upload daily or weekly for best dashboard accuracy. WorkMagic overwrites previous data when the same combination of ads_platform, date_code, campaign_id, adset_id, and ad_id if uploaded again.
Q: What happens if my platform name in the upload doesn't match the data scope?
A: Records with an unrecognized platform name will be rejected. Ensure the ads_platform value in your upload matches exactly the platform name you added in your data scope.
Q: Can I upload weekly aggregate data instead of daily?
A: Yes. Set date_granularity to WEEKLY and provide the start date of the week in date_code. WorkMagic will automatically split the weekly total into 7 daily records. If using WEEKLY, the date_code should be the start date of the week and we will split the data into the following 7 days.
Q: I need to upload spend data on a recurring schedule. Is there an automated way to do this?
A: Yes. Simply send your data files to the address below on your desired schedule, and notify your account manager. WorkMagic will handle the rest — no additional setup required on your end.
To get started, notify your account manager and begin sending your data files to the following address on your desired schedule:
Recipient: [email protected]
Subject line: {tenant_id}_{platform}_{frequency}
Body: No requirements. However, if subject line customization is not supported by your email system, include {tenant_id}_{platform}_{frequency} in the email body instead.
