Skip to main content

Upload Marketing Data for Non-Integrated Ad Platforms

Guide for uploading ad spend data from platforms not natively integrated with WorkMagic, including required fields, data format, and five upload methods.

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

date_code

Frequency of the report, Date in YYYY-MM-DD format. For WEEKLY data, use the start date of the week (e.g., Monday).

date_granularity

DAILY or WEEKLY.

account_id

The unique ID of the advertising account as it appears in your platform's reporting.

account_name

The name of the advertising account as it appears in your platform's reporting.

ads_platform

The top-level channel — must match exactly what you entered in your Data Scope. (Guideline of Data Scope, please see Part 2(a))

campaign_id

The unique ID of the campaign. Together with adset_id and ad_id, these three fields define the granularity of your data. Fill in all three if your data is at the ad level; if your data is only at the campaign level, enter the campaign ID here and set adset_id and ad_id to -1.

adset_id

The unique ID of the ad set / ad group. If your data is at the campaign level only, set this field to -1. If your data is at the ad set level but not ad level, enter the ad set ID here and set ad_id to -1.

ad_id

The unique ID of the individual ad creative. If your data is not at the ad level, set this field to -1.

ad_spend

Aggregate spend for the period in your account currency. Enter as a numeric value with no currency symbols (e.g., 450.00).

clicks

(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

campaign_type

The campaign objective or optimization goal as set in the platform (e.g., outcome sales, outcome traffic, search, performance max). Reflects the platform's bidding/delivery intent, not the campaign name or creative strategy.

campaign_name

Name of the campaign as it appears in your platform's reporting.

adset_name

Name of the ad set / ad group.

ad_name

Name of the individual ad creative.

impressions

Number of times ads were displayed, as reported by the platform.

clicks

Number of times ads were clicked, as reported by the platform.

ads_sales

Total sales attributed to ads, as reported by the platform.

ads_orders

Total number of orders attributed to ads, as reported by the platform.

extended_metrics

Custom metric key-value pairs for additional analysis (e.g., {"customer_field_1": 1899, "customer_field_2": 8999.20}). Only base metrics that can be aggregated by summation are supported — computed/compound metrics are not. Contact your account manager before using this field to align on key names and value types prior to upload.

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.

  1. Go to Settings > Platform Integration > Data scope & Feature readiness.

  2. Look for the Marketing channels section.

  3. 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.

  1. 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)

  1. Select Google Sheets as your upload method.

  2. Click the template link and select Make a copy to your Google Drive.

  3. Fill in your spend data following the required field format above.

  4. Share view access with: [email protected]

  5. 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:

  1. Select Amazon S3 and choose WorkMagic's bucket.

  2. In the AWS Console, go to IAM > Users and get your IAM User ARN.

  3. Enter your IAM User ARN into WorkMagic and click Confirm.

  4. Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)

  5. Upload your spend data files to the designated bucket and path.

Option B — Use your own S3 bucket:

  1. Select Amazon S3 and choose Your own bucket.

  2. Provide WorkMagic with your S3 bucket name and the necessary IAM credentials.

  3. Install AWS CLI.

  4. Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)

  5. 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:

  1. Select Google Cloud Storage and choose WorkMagic's bucket.

  2. WorkMagic's bucket name: workmagic-inbound-data

  3. Create a Google Service Account in your Google Cloud project and share the account with us for authorization.

  4. Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)

  5. Upload files to the WorkMagic bucket using the GCS SDK or gsutil.

Option B — Use your own GCS bucket:

  1. Select Google Cloud Storage and choose Your own bucket.

  2. Create a Google Service Account in your Google Cloud project and share the account with us for authorization.

  3. Transform your data into a JSON.gz payload, following the structure indicated in section Part 1(c)

  4. WorkMagic will provide an assigned GCS path. Use gsutil rsync to sync files from your bucket to that path on a recurring schedule.


Method 4: Snowflake

  1. Select Snowflake as your upload method.

  2. WorkMagic will provide the target S3 export path and credentials in the setup panel.

  3. In Snowflake, use the COPY INTO command to export your spend data to the specified S3 location.

  4. Transform your Snowflake data table into a JSON.gz payload, following the structure indicated in section Part 1(c)

  5. Schedule the export to run on a recurring basis (e.g., daily).


Method 5: BigQuery

  1. Select BigQuery as your upload method.

  2. WorkMagic will provide the target GCS export path and credentials.

  3. Transform your BigQuery data table into a JSON.gz payload, following the structure indicated in section Part 1(c)

  4. In BigQuery, use EXPORT DATA or a scheduled query to export your spend data to the specified GCS bucket.

  5. 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.

  1. Go to Settings > Data Integration > Marketing Data > Upload Data.

  2. Click the Debug Tool tab (next to Instructions).

  3. Scroll down to find Data Sync Processing Report — note this is separate from the Data Accuracy report.

  4. Select the relevant time range.

  5. 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:

  • 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.

Did this answer your question?