Getting started
Your first export
From Shopify data to a downloaded file in a few steps.
Your first export
From Shopify data to a downloaded file in a few steps.
A report is a saved set of data fields, filters, file settings and delivery options. A run creates a file using that configuration. Shadow reads your Shopify data; it does not import files back into your store.
- Open Shadow in Shopify → Apps. In Reports, choose + Create report, or Use template for a ready-made starting point.
- Choose a data source and give the report a recognizable name, such as Daily orders.
- Use + Add columns to choose fields. For order positions, include Order number, Line items: SKU and Line items: Quantity.
- Open File and choose XLSX for a spreadsheet or CSV for a delimited file. Leave Storage set to Download for your first run.
- Click Preview to inspect a sample. Close the preview, click Save, then Run export.
- In History, wait for completed, then click Download on that run. Open the downloaded file in a compatible spreadsheet application.
Preview uses up to 10 source records. It does not deliver a file or mark records as exported. A full export can contain more rows, especially when records contain multiple items.
Choose your data source
Orders, products, customers, locations, collections and payouts.
Choose your data source
Orders, products, customers, locations, collections and payouts.
Orders include order fields and nested information such as line items, shipping lines, refunds, fulfillments and transactions. Products include variants and images. Customers contain customer and address fields. Locations provide location and inventory information. Collections include their products.
Payouts depend on Shopify Payments data and the access available to your shop. A field appearing in the editor does not guarantee that every record has a value. Missing permissions, unavailable data and empty source fields can produce missing values or an access error.
Use Templates to find an editable starting point, search by name or choose a category. Review its fields, filters and settings before saving your own report.
Link to this guide ↗Save, duplicate and organize reports
Understand saved settings, reusable configurations and report actions.
Save, duplicate and organize reports
Understand saved settings, reusable configurations and report actions.
Save stores your changes. Run export uses the current editor configuration; save first when schedules or future runs should use those settings. Unsaved changes are indicated in the editor.
On Reports, use Search reports to find a report and its three-dot menu for Duplicate, Export configuration, Reset incremental history or Delete. A duplicate has its own report identity and export tracking, so its first incremental run can export records already sent by the original.
Export configuration downloads a JSON report definition. Import JSON restores a report configuration, not Shopify orders or previous export history. Check delivery settings and schedules before using imported reports.
Deleting a report does not recall files already downloaded or delivered, and does not automatically remove its files from History. Resetting incremental history makes previously tracked records eligible again; use it only when a deliberate re-export is intended.
Link to this guide ↗Report editor
Columns and tabs
Choose fields, rename headers and arrange your output.
Columns and tabs
Choose fields, rename headers and arrange your output.
Click + Add columns, search for a field and select it. Rename its Column title to change the exported header. The arrows move columns up or down, and × removes a column. A field can be added more than once with different formatting.
Use + Add tab to add another data source. Tab settings changes the tab name or hides column headers. XLSX supports multiple worksheets. CSV and TXT export the first tab only.
Hide from output in a column’s Format settings keeps a helper column out of the delivered file. Use Preview after changing column order, sources or visibility.
Link to this guide ↗Filter your data
Limit records by status, date, text or numeric values.
Filter your data
Limit records by status, date, text or numeric values.
Open Filters → + Add filter. Choose a field, comparison and value. All conditions (AND) requires every rule to match. Any condition (OR) accepts a matching rule.
Apply: Source data checks source values. After custom columns / mappings checks values after your transformations. Choose the latter when filtering a calculated column or a mapped label.
Date operators include yesterday, this month, previous month, last days, before, after and between. Rolling date filters are evaluated again on later runs. Review the report timezone when using date-based automation.
A line-item filter can remove positions from an otherwise matching order. If complete orders are required, use Order export rules and keep partial-order blocking enabled.
Example: Financial status equals PAID AND Created at → previous month Result: a report limited by both payment status and date.Link to this guide ↗
Format dates, numbers and text
Change how individual column values are written.
Format dates, numbers and text
Change how individual column values are written.
Open Format beside a column. Prefix and suffix add fixed text. Search and replace changes matching text; enable Search is regular expression only for a regex pattern. Extract uses a pattern to take matching content.
Trim removes whitespace and Case changes capitalization. Padding and padChar help with fixed-width identifiers; maxLength shortens text. Multiply and decimals adjust numeric output. Display numeric zero as empty intentionally hides zero values.
Use the date field for a date pattern such as yyyy-MM-dd or dd.MM.yyyy. Month is MM and minute is mm. Number formatting is separate from the CSV delimiter and file encoding.
Repeat on every row repeats that column’s parent value when a record expands into multiple rows. Review numeric order totals carefully: repeating them is useful for identification but can inflate a later spreadsheet sum.
Date: yyyy-MM-dd → 2026-09-24 Prefix: WEB- + order number → WEB-#1001 Padding: 5, padChar: 0 → 00042Link to this guide ↗
Custom columns and expressions
Add fixed values, combine columns and calculate values.
Custom columns and expressions
Add fixed values, combine columns and calculate values.
Choose + Custom column, name the column and enter its value or expression. Reference another column by its exact title inside double braces. Keep titles distinct to make references predictable.
Use double square brackets for arithmetic. Referenced numeric fields must contain numeric values; missing values are treated as zero in arithmetic. Check the preview before relying on a calculation.
Date(yyyy-MM-dd) inserts the run date. addDays(2026-09-24, 7) calculates a date seven days later. Spreadsheet formulas are different from calculated export expressions: a spreadsheet program evaluates a formula when the file is opened.
Fixed value: Online store
Combine: Order {{Order number}}
Calculate: [[ {{Quantity}} * {{Unit price}} ]]
Run date: Date(yyyy-MM-dd)Link to this guide ↗Map values to your own labels
Replace a column value when a condition matches.
Map values to your own labels
Replace a column value when a condition matches.
Open Mappings → + Add mapping. Set the condition, choose Replace column and enter New value / expression. Use this for status labels, destination-specific codes or conditional text.
For example, map a financial status of PAID to Paid in a status column. A mapping changes exported values, not the corresponding order in Shopify. Review multiple rules together because later transformations can affect the result.
- Add the source and destination columns to your report.
- Create a condition using the appropriate field and operator.
- Select the column to replace and enter the new value.
- Check Preview with both matching and non-matching records.
Extra rows and row rules
Insert headers, footers or conditional rows.
Extra rows and row rules
Insert headers, footers or conditional rows.
Open Rows → + Add row rule. Position / action lets you insert content Before header, After header, Last row, Before each item or After each item, or Delete matching rows.
Fill values for the relevant columns and enable Conditional when the rule should apply only to matching data. A delete rule changes the output; it does not delete Shopify records.
Excel footer shortcuts include =SUM, =AVERAGE, =COUNT, =MIN and =MAX. Check the generated XLSX in your spreadsheet application. For machine imports, extra rows can violate the receiving system’s expected file structure.
Link to this guide ↗Group, aggregate and pivot
Summarize detail rows into totals and comparisons.
Group, aggregate and pivot
Summarize detail rows into totals and comparisons.
Open Aggregate and enable aggregation. Choose Group rows by for your categories, then add Metrics with sum, count, average, min or max. Pivot columns by creates separate output groups across columns.
Configure sorting and Grand totals if needed. For a quantity-by-SKU report, group by SKU and sum line-item quantity.
Choose measures at the same level as your rows. An order total repeated across five positions is not five separate sales totals. Use line-level amounts for line-level summaries, or a report containing one row per order.
Link to this guide ↗Orders and incremental exports
Multiple articles and quantities
One order can produce several rows without becoming several orders.
Multiple articles and quantities
One order can produce several rows without becoming several orders.
Nested rows controls how lists such as order line items expand. Standard shows parent values on the first row. Fill every row repeats parent values beside each position. Compress lists into one row combines list values. Duplicate unchanged values by quantity repeats rows; it does not automatically turn every quantity field into 1.
For an explicit one-row-per-unit export, enable Order export rules and choose One row per unit, quantity 1. Use the Export quantity column. Original quantity columns remain historical values and should be hidden or removed if they would confuse the receiving system.
Separate positions with the same SKU remain separate. Shadow does not silently merge positions that happen to share a SKU.
Multiple independent lists can be aligned by position or expanded as All combinations. Position alignment does not establish a relationship between, for example, a fulfillment and a line item. Use separate tabs when those lists should stay independent.
Order #1001: T-SHIRT × 2, CAP × 1 One row per position: #1001 | T-SHIRT | 2 #1001 | CAP | 1 One row per unit (Export quantity): #1001 | T-SHIRT | 1 #1001 | T-SHIRT | 1 #1001 | CAP | 1Link to this guide ↗
Order export rules
Control eligibility, quantities and complete-order checks.
Order export rules
Control eligibility, quantities and complete-order checks.
Open Export mode / Order rules and enable Order export rules for the active Orders tab. Shadow adds order number, SKU and Export quantity if missing. Configure row layout, repetition of order fields and quantity basis.
Current quantity excludes removed/refunded units. Original quantity includes them. This setting affects Export quantity; it does not rewrite historical quantity fields.
Choose eligible payment status and whether to exclude cancelled or test orders. For a positive-quantity position without a SKU, either block the export or explicitly allow an empty SKU.
Keep Filters remove part of an order set to Block export when complete orders are required. If you explicitly allow partial orders with incremental mode, the entire order is tracked as exported. Omitted positions will not automatically be sent later. An order with no matching positions or zero quantity remains untracked.
Typed import positions can represent shipping and discounts using dedicated type, SKU, price and amount columns. Review the discount handling and amount precision controls against your receiving system’s specification; the ordinary SKU and price fields are not substitutes for the dedicated import columns.
Link to this guide ↗What incremental means
Export eligible records that this report has not successfully exported before.
What incremental means
Export eligible records that this report has not successfully exported before.
Enable Incremental in Export mode / Order rules. Shadow tracks successfully exported source records for that report. On later runs, it skips records already tracked, even if those records still match the filter.
The first run can export every matching record. Incremental does not mean “only records created after I turned this on.” Add a date filter if you need a specific starting point.
Tracking is based on the source record, not the number of output rows. An order with five positions is still one tracked order. A second run can correctly produce zero rows when nothing new qualifies.
Changing a filter does not reset tracking. Duplicating a report creates independent tracking. Reset incremental history makes prior records eligible again and can cause duplicate deliveries.
Do not start a replacement run for an unresolved FTP transfer. Use History → Resume so Shadow reuses saved files and delivery receipts.
First run: orders #1001 and #1002 → exported Second run: #1001, #1002 and new #1003 match Output: #1003 only
Incremental exports do not automatically synchronize later edits, cancellations or refunds into an external system.
Previously exported orders changed
Review changes without automatically resending orders.
Previously exported orders changed
Review changes without automatically resending orders.
Incremental order runs compare loaded, previously exported orders against their saved business snapshots. History shows changed orders, records without a baseline and coverage changes.
To check without delivering a file, open Reports → three dots → Check order changes (no delivery). Only orders loaded within the report’s source selection can be compared; this is not a full-store change monitor.
Older exports without a saved snapshot cannot be compared retrospectively. Review differences and your downstream update process before intentionally re-exporting. An uploaded file is not confirmation that another system processed or updated an order.
Link to this guide ↗Files and delivery
XLSX, CSV, TXT and ZIP
Choose the file structure your recipient can read.
XLSX, CSV, TXT and ZIP
Choose the file structure your recipient can read.
XLSX is an Excel workbook and supports multiple report tabs, formatting, frozen headers and alternating row colors. Shadow generates .xlsx, not the legacy .xls format.
CSV and TXT are delimited text exports of the first tab. Set Encoding, Delimiter, Quotes, Decimal separator and Line endings to match your recipient’s requirements. End file with a line break adds a final newline.
UTF-8 with BOM can help spreadsheet software recognize Unicode. A semicolon delimiter is often useful when decimal values use commas. The importing application must use the same settings.
New file for each item creates separate files for source items and packages them in a ZIP for download. One order can still contain several position rows in its own file.
A typical CSV setup: Encoding: utf8bom Delimiter: Semicolon Quotes: Always double quotes Line endings: CRLF "Order number";"SKU";"Quantity" "#1001";"T-SHIRT";"2"Link to this guide ↗
File names
Use report names and timestamps in file names.
File names
Use report names and timestamps in file names.
Open File → Filename. Variables include %reportname, %tabnames, %Y, %m, %d, %H, %M and %S. Keep the filename recognizable and use the report’s time settings consistently.
FTP deliveries add a unique suffix to protect against collisions. Do not configure a receiving process to depend on one permanently overwritten filename. Match an appropriate filename pattern instead.
%Y%m%d_%reportname → 20260924_Daily orders %Y%m%d_%H%M%S_orders → 20260924_080000_ordersLink to this guide ↗
Downloads and feed URLs
Download a completed run or let a system retrieve its feed.
Downloads and feed URLs
Download a completed run or let a system retrieve its feed.
Download is the simplest destination: run the report and download the completed file from History. Deliver empty files controls whether an empty result should still be delivered.
Feed URL provides a protected retrieval URL for the report’s available export. Choose Feed URL in Storage and use the feed information shown by Shadow. Run the report to generate output; schedules can keep it updated.
Treat the entire feed URL as a secret: anyone with a valid access URL can retrieve its exported contents. Do not place it in a public page or screenshot. If access must be revoked, contact support.
Google Drive, Google Sheets and Dropbox are not available destinations in Shadow. Use Download, Feed URL, FTPS/SFTP or email.
Link to this guide ↗Send exports by email
Set recipients, a subject and file attachments.
Send exports by email
Set recipients, a subject and file attachments.
Shadow can use its configured server email service. Settings shows the active sender. A custom email connection is optional when you need your own SMTP provider; it must use a secure connection.
- Open the report → Email and enable email delivery.
- Fill To and, if needed, CC, BCC and Reply-to address. Review every recipient because the export may contain customer data.
- Set Subject and Message. Enable Attach exported file to include the file.
- Choose Skip when empty if recipients should not receive empty reports.
- Click Done, Save, then Run export. Check History and confirm the message and attachment arrived before enabling a schedule.
A successful send does not prove that the recipient opened the message. Check spam folders and recipient/provider limits when a message or attachment is missing.
Connect an FTPS or SFTP server
Configure a destination once, then select it in your report.
Connect an FTPS or SFTP server
Configure a destination once, then select it in your report.
SFTP uses SSH. FTPS uses TLS; explicit and implicit FTPS are different modes. Plain, unencrypted FTP is not supported. Ask the server administrator for the correct protocol, host, port, username, password and destination folder.
For SFTP, use the host fingerprint supplied by your server administrator when configuring identity verification. FTPS requires a valid server certificate. Do not use a feed URL or an admin login page as the host.
- Open Settings → Email and storage connections and select FTPS / SFTP or the second connection slot.
- Choose Protocol, then enter the host, port, user, password and folder. Set the relevant verification details.
- Save settings, then use Test saved connection. Correct any connection or permission error before continuing.
- Open your report → Storage and select that connection. Save and run a small export.
- Check History and verify the file exists in the destination folder with the expected contents.
The destination needs permission to create and rename files. Configure receiving processes to ignore temporary .part files and read only finished files.
Resume a failed or uncertain transfer
Recover a delivery without blindly creating another export.
Resume a failed or uncertain transfer
Recover a delivery without blindly creating another export.
Shadow saves transfer files before uploading, uses unique filenames and records confirmed deliveries. History → Resume reuses those files and skips deliveries already confirmed. Existing files are not overwritten by this workflow.
If a connection drops at the final confirmation step, a file may already exist on the server even though Shadow cannot confirm the result. Review the pending transfer and the actual destination before resolving its status.
Do not delete a remote file or rerun the report simply to clear an uncertain state. The recipient may already have processed the file. Reconcile the receiving system first, then use the available History actions.
Transfer success means file delivery. It does not mean the recipient imported the contents successfully.
Link to this guide ↗Automation and account
Schedule automatic exports
Run saved reports while the app is closed.
Schedule automatic exports
Run saved reports while the app is closed.
Open Schedule, enable scheduled exports and choose Every 15 minutes, Hourly, Daily, Weekly or Monthly. Configure the time and the additional weekday or first/last-day option when available.
The report’s Timezone determines its schedule. Settings → Default timezone is used for new reports; changing it does not rewrite existing report schedules. Review times around daylight-saving changes.
Click Done and Save to persist the schedule. The hosted worker runs scheduled exports; you do not need to leave the app open. Check History after the first scheduled run.
To stop future scheduled runs, disable Enable scheduled exports and save the report. Turning off a schedule does not recall files already delivered. Start with a manual delivery test before enabling email or FTP automation.
Link to this guide ↗Selected records and Shopify Flow
Use Shadow from Shopify workflows.
Selected records and Shopify Flow
Use Shadow from Shopify workflows.
Shadow includes Shopify Admin export actions for selected orders, products and customers. Select records in the corresponding Shopify list, open its actions menu and choose the Shadow export action. Select a compatible saved report and follow the action’s prompts.
For Shopify Flow, use the Shadow export action with the Report ID shown in the report editor. Save the report first. The workflow uses that saved configuration, including its destination and filters.
Test with a small selection or a controlled Flow event, then check History. A selected record can still be excluded by report filters or incremental tracking. Availability depends on the installed extension and your plan.
Link to this guide ↗Plans, limits and account settings
Manage subscriptions through Shopify.
Plans, limits and account settings
Manage subscriptions through Shopify.
Open Settings → Subscription for current plan details and Manage plan in Shopify to review changes. Shopify handles confirmation and billing. Development stores can show a no-charge development status.
Plans differ by row allowance and automation access. Review the limits shown in Settings before running larger exports. There is also a technical limit of 100,000 source records per tab; nested lists can expand those records into multiple output rows.
If a run reaches a limit, narrow the source with filters or split the work into reports before trying again. Do not assume that a partial file contains the complete dataset.
Link to this guide ↗Troubleshooting
Missing rows, empty cells or unreadable files
Quick checks for the most common export questions.
Missing rows, empty cells or unreadable files
Quick checks for the most common export questions.
No rows: check source filters, date range, payment eligibility, selected IDs and incremental tracking. Previously exported records may be correctly skipped. Preview does not update tracking and is a sample, so it is not proof of what the next incremental run will deliver.
Blank values: confirm that the source record contains the data. Check Hide from output, Display numeric zero as empty, column mappings and access permissions. Standard nested rows intentionally leaves parent fields blank after the first position.
Too many rows: inspect line items and other nested lists. All combinations can multiply independent lists. Repeated order totals should not be summed as though they were separate orders.
Unreadable CSV or all content in one column: use your spreadsheet application’s text import and explicitly select the configured encoding and delimiter. For convenient spreadsheet viewing, try XLSX.
Older orders missing: Shopify access can restrict historical orders. A date filter cannot grant missing historical access. Contact support if your report requires older orders that are not available.
Download fails: reopen Shadow through Shopify Admin, locate the completed run in History and download again. Completed files are retained for 30 days. Never rename an HTML error page to .xlsx; it is not an export file.
Link to this guide ↗Connection errors and getting help
Identify the failed step and provide useful support information.
Connection errors and getting help
Identify the failed step and provide useful support information.
For FTPS/SFTP, verify protocol and port, host spelling, credentials, remote folder permissions, firewall rules and server identity. A successful saved-connection test helps isolate configuration problems; a real export confirms file delivery.
For email, verify recipients, attachment settings, Skip when empty and any provider rejection shown in History. For schedules, verify the schedule was saved and check the report’s own timezone.
When contacting support, include your shop domain, report name, run ID if available, time of the run and the exact error. State what you expected and what happened. Do not send passwords, access tokens, private feed URLs or unredacted customer files.
Contact info@bembedded.com for setup, exports, billing and privacy requests.
Ready to make your next report?
Open Shadow from Apps in your Shopify admin. Start with a preview, then save and run.
Open Shopify admin ↗