Skip to main content

Exports and Google asset views

Export the report​

Use the Export button on the Paid Acquisition Report (and on the Ads page) to open Design your export.

  1. Pick the type.
    • Raw export — unformatted values for spreadsheets and analysis.
    • Report — a formatted page to share, print, or save as PDF.
    • Detailed breakdown — performance plus the connected orders and attribution behind it.
  2. Pick the scope. Export the full selected account and date range, or only the rows you selected in the table (the selection is frozen when you open the dialog, and the numbers are refreshed at download). Your date range, client, ad account, name filters and platform choices carry into the export, and the export shows the same names as the drill-down.
  3. Name it, pick the reporting level and the file format. Formats are CSV spreadsheet, JSON data, and printable HTML report.
  4. Choose columns. Select all metrics, clear them, or use the table columns you currently see. Search for fields by name, and drag columns to set their order. The CSV follows the order you choose, and your last choice is remembered in your browser.
  5. Optional orders. Tick Include all connected order data to add order-level fields.
  6. Select Download export.

Things worth knowing about the file:

  • Fields the report does not hold for a row are marked "Unavailable" in CSV and reports and are null in JSON. Blank identity fields mean unknown.
  • Open ID columns as text in your spreadsheet so long IDs keep their leading zeros.
  • crm_order_ids lists the CRM orders counted in crm_purchases on a campaign, ad set, or ad row. It is unavailable at other levels and on rows built from aggregate counts that carry no order IDs. Cells longer than the spreadsheet limit end with a count of what was left out; the JSON export has the full list.
  • Totals and revenue in an export reconcile with the screen; money is dollars.

Shared export templates​

A template is a named, ordered list of columns (no filters, no dates, no data). Everyone who can export can apply a template from the dialog. Only a Super Admin can save or delete templates (type a name, then "Save current columns"). Applying a template keeps only columns that exist at the current reporting level.

Performance Max assets​

On the Platforms page, open the Google platform view to see a Performance Max assets panel for the selected date range. It lists Performance Max campaigns that delivered in the range; expand a campaign to load its assets with status, asset type, name and performance. You can filter by asset group, asset type, and status. The data is read live from Google Ads, so a large account can take a moment to load, and conversions can be incomplete when Google does not return all of them (the panel says so).

Weekly Google asset CSV​

Also on the Google platform view, the asset report download gives a CSV of every Performance Max and Demand Gen asset for one client and one full week (choose from the last eight weeks), with week-over-week changes. When an account does not expose asset-level numbers, rows keep Google's performance label, the numbers are left blank rather than shown as zero, and the Note column says so. The client you pick is a hint only: the server always applies your own access.

For developers — where this lives
  • Export dialog: src/components/marketing/MarketingExportButton.tsx; builders in src/lib/marketing/report-export.ts, column order in export-column-order.ts, selection in export-selection.ts.
  • Templates: GET/POST/DELETE on /api/admin/export-templates (requireLiveSuperAdmin for writes), read via /api/export-templates; table from migration 20261015120000_report_export_templates.sql. Template input limits: 80-character name, 200 columns (src/lib/marketing/export-templates.ts).
  • Orders export: /api/marketing/export-orders.
  • Google assets: src/lib/marketing/google-pmax-assets.ts (panel, /api/marketing/google-pmax-assets) and google-asset-report.ts (CSV, /api/marketing/google-assets). Both are read-only live GAQL through the shared 1 request per second Google queue; cost_micros / 1e6 gives dollars.