WorkMagic supports two types of imported channels for brands that sell on platforms not natively integrated with WorkMagic and where pixel-based tracking is not applicable:
Imported Online Store — a DTC store on a platform without a native WorkMagic integration (e.g., Chewy, a platform being migrated from, or any digital storefront not supported by the pixel)
Imported Marketplace / Retail — a secondary sales channel such as Walmart marketplace, Target, Nordstrom, or other retail/wholesale accounts
These channels are used for cross-channel sales analysis, MBO, and lift testing only — not for Multi-Touch Attribution (MTA). Because there is no pixel or click-level tracking, WorkMagic cannot attribute individual clicks to imported channel conversions. Instead, WorkMagic measures how your DTC marketing drives halo-effect sales on these channels.
If your store supports pixel installation and real-time order tracking, use the Custom-built website integration instead.
Part 1: Prepare Your Retail 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 > Sales Data > Google Sheet, or directly open the template here.
(a) Required Fields
Field | Description |
| Frequency of the report, |
| Date in |
| Geographic granularity of the data: |
| The geographic identifier matched to |
| The name of the channel where the sale occurred (e.g., |
|
|
| Country where sales occurred, in ISO 3166-1 alpha-2 format (e.g., |
| Number of orders placed before cancellations and refunds. For retail channels, please use this field to reflect number of units sold. Enter as a numeric value. |
| Total value of sales in your store currency. Enter as a numeric value (e.g., |
Important: The fields marked as primary keys (date_type, date_code, geo_type, geo_code, sales_platform, sales_platform_type, country_code) 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 — for example, multiple store locations within the same ZIP code or DMA on the same date — aggregate them into a single row by summing orders, sales, profit, new_customer_orders, and new_customer_sales 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 |
| Human-readable name for the geographic region (e.g., |
| Profit earned after subtracting costs, in your store currency. Used for profit prediction in MBO. |
| Number of orders placed by new customers. Used for calculating incremental new customer orders in lift tests and MBO. |
| Total value of sales placed by new customers in your store currency. Used for incremental new customer sales analysis in lift tests and MBO. |
(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_type": "DAILY",
"date_code": "2025-01-01",
"geo_type": "DMA",
"geo_code": "501",
"geo_name": "NEW YORK",
"sales_platform": "walmart",
"country_code": "US",
"orders": "10",
"sales": "10.01",
"profit": "10.01"
},
{
"date_type": "DAILY",
"date_code": "2025-01-01",
"geo_type": "DMA",
"geo_code": "501",
"geo_name": "NEW YORK",
"sales_platform": "walmart",
"country_code": "US",
"orders": "10",
"sales": "10.01",
"profit": "10.01"
}]
(d) 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.
(e) Preparing data for upload
To onboard your data properly, we require historical, net-new and updated sales data:
Historical data: Please send over records from the past 180 days to enable lift testing and model learning
Net-new data: Depending on your source data's refresh cadence, please set up a daily / weekly data job that updates your source table with rolling 30 days data so net-new data can be pushed to Workmagic
When updating an order, the data with the same unique key (date_type, date_code, geo_type, geo_code, sales_platform, sales_platform_type, country_code) will be overwritten with the new information.
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 Sales channels section at the bottom of the platform list.
Click Edit and check the relevant sales channels or enter the platform name exactly as you want it to appear in dashboards (e.g., "retail").
Save your changes.
The sales platform indicated in your data scope should match exactly to the value used in the payload's sales_platform field
(b) Choose Your Upload Method
Navigate to Settings > Data Integration > Sales 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 sales 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 every hour.
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 — duplicates will be automatically deduplicated and overwritten with the new values.
Please allow 1 hour for the updated data to be processed and reflected on your account.
To onboard your data properly, we require historical, net-new and updated sales data:
Historical data: Please send over records from the past 180 days to enable lift testing and model learning
Net-new data: Depending on your source data's refresh cadence, please set up a daily / weekly data job that updates your source table with rolling 30 days data so net-new data can be pushed to Workmagic via Google Sheets
When updating an order, the data with the same unique key (date_type, date_code, geo_type, geo_code, sales_platform, sales_platform_type, country_code) will be overwritten with the new information.
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.
Upload your sales data files to the designated 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 path.
To onboard your data properly, we require historical, net-new and updated sales data:
Historical data: Please send over records from the past 180 days to enable lift testing and model learning
Net-new data: Depending on your source data's refresh cadence, please set up a daily / weekly data job that updates your source table with rolling 30 days data so net-new data can be pushed to Workmagic
When updating an order, the data with the same unique key (date_type, date_code, geo_type, geo_code, sales_platform, sales_platform_type, country_code) will be overwritten with the new information.
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.
To onboard your data properly, we require historical, net-new and updated sales data:
Historical data: Please send over records from the past 180 days to enable lift testing and model learning
Net-new data: Depending on your source data's refresh cadence, please set up a daily / weekly data job that updates your source table with rolling 30 days data so net-new data can be pushed to Workmagic via Google Sheets
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 data 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).
To onboard your data properly, we require historical, net-new and updated sales data:
Historical data: Please send over records from the past 180 days to enable lift testing and model learning
Net-new data: Depending on your source data's refresh cadence, please set up a daily / weekly data job that updates your source table with rolling 30 days data so net-new data can be pushed to Workmagic via Google Sheets
Method 5: BigQuery
Select BigQuery as your upload method.
WorkMagic will provide the target GCS export path and credentials.
Transform your data 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.
To onboard your data properly, we require historical, net-new and updated sales data:
Historical data: Please send over records from the past 180 days to enable lift testing and model learning
Net-new data: Depending on your source data's refresh cadence, please set up a daily / weekly data job that updates your source table with rolling 30 days data so net-new data can be pushed to Workmagic via Google Sheets
(c) Verify Your Upload
After uploading, confirm that your data has been successfully ingested using the Debug Tool.
Go to Settings > Data Integration > Sales 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 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.
What WorkMagic Measures for Imported Channels
Once uploaded, your data will appear across the following areas.
Capability | Available |
Sales and order data in dashboards | ✓ |
Cross-channel halo effect analysis | ✓ |
Marketing Mix Modeling (MMM) | ✓ |
Incrementality / Lift Testing | ✓ |
Multi-Touch Attribution (MTA) | ✓ — under incrementality attribution model and data-driven attribution model only |
Customer-level attribution | ✗ |
FAQ
Q: Can I use MTA for my imported channel?
A: Yes. Our model based attribution model (incrementality adjusted attribution and data-driven attribution) provides attribution for imported ad platforms.
Q: What is the difference between an Imported Online Store and a Custom-built website?
A: A Custom-built website uses the WorkMagic Pixel for real-time click tracking plus Orders API for order matching — enabling full MTA. An Imported Online Store uses data-upload only (no pixel), enabling model based attribution, lift test, cross-channel analysis and MMM.
Q: What upload formats does WorkMagic accept?
A: WorkMagic accepts JSON (gzip-compressed or uncompressed) via S3, GCS, Snowflake, BigQuery, or Google Sheets. See Part 1 for field definitions and schemas.
Q: How often should I upload data?
A: For best results, upload on a daily or weekly basis. WorkMagic uses the most recently uploaded data, so frequent syncs keep your dashboards up to date.
Q: Can I add multiple imported marketplace channels?
A: Yes. You can add multiple imported marketplace/retail channels (e.g., both Walmart and Target) on a sheet and upload separate order data for each. If you are using Google Sheet to sync multi channel data with WorkMagic, please consolidate the feed into one Google Sheet and sync this master sheet with WorkMagic on our platform's UI.
Q: I need to upload sales 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.
