Attribution and customer journeys

Split an oversized ChatGPT conversion report without losing rows

Recover an oversized ChatGPT conversion report. Partition requests without overlap, track successful pieces and recombine summary and event rows safely.

Start reading
Editorial illustration: Three woven sections of a blue and rust landscape sit beside one another.
Editorial illustrationThe separate textile sections evoke report partitions that need to be preserved and checked when a large extraction is divided.
The working guide

What you can work through.

Attribution and customer journeys
  • A 413 is an incomplete request, not a zero-result report.
  • Partition dates or entities without changing attribution settings.
  • Avoid summing repeated summary rows across event-name partitions.

An HTTP 413 from the dedicated ChatGPT conversion-reporting endpoint means the requested result is too large for that report operation. Retrying the identical request indefinitely does not reduce its size. The useful response is to partition the query while preserving the definition of the report you intended to retrieve.

This differs from following pagination in general Insights. OpenAI reporting documentation sets three limits for the dedicated conversion endpoint: 2,000 summary rows, 2,000 event rows and 2,000 goal-setting breakdown entries for one event. Exceeding any limit returns 413 with no partial report or pagination cursor. Treat the request as an uncompleted partition, not an empty successful report.

Preserve the query before dividing it

Save the original account, entity IDs, date range, aggregation, time granularity, attribution windows, time basis, breakdown and event expansion options. This is the report contract. Smaller requests should change only the chosen partition dimension unless a deliberate scope change is approved for the analysis.

If one retry silently removes view-through attribution or switches the time basis, the resulting pieces cannot simply be added together. The extraction may finish technically while answering a different question. Store the shared parameters once and record each partition’s narrower scope alongside them.

Keep credentials outside the saved manifest. The manifest needs enough information to reproduce the request under authorized access, but does not need the API key itself. Include the request time and error status so later operators know which attempt failed and why.

Choose an additive partition

Splitting a long period into non-overlapping full-day ranges is often practical. Use the account’s reporting timezone and the endpoint’s exclusive end convention. In a hypothetical September extraction, one range ends at midnight starting September 16 and the next begins at that same instant. Together they cover the month without sharing a day.

Alternatively, divide the entity list into disjoint groups while retaining the full time range. This can preserve period-level totals for each campaign. Make sure every expected entity appears exactly once in the partition manifest, including entities that might return no activity under the chosen options.

Choose based on the required output grain. If the final report needs daily campaign rows, date partitions can be concatenated after checking keys. If it needs one row per campaign for the whole month, splitting time requires an explicit aggregation step. Do not average ratios or copy the last period total as if it represented the entire month.

Workflow

Partition without gaps or duplicates

  1. Part A

    1 September 00:00 to 16 September 00:00.

  2. Part B

    16 September 00:00 to 1 October 00:00.

  3. Validation

    Identical windows, time basis and row key in both parts.

Hypothetical September extraction with an exclusive end boundary.

Understand what event selection changes

Narrowing selected event names can reduce expanded event rows where those details are the size problem. However, selecting fewer names changes the detail scope and does not necessarily reduce every summary component. Decide whether the omitted details are actually unnecessary for the task.

If event-name partitions are used, summary rows may repeat across requests. Do not add repeated goal totals or sales values once for each selected-name group. Keep summary metrics from one verified matching scope and combine only the intended disjoint event details, with a documented key for each level.

Use event-selector troubleshooting if the reduced request is rejected for a name. A 400 selector error and a 413 size error require different remedies. Treating them as the same generic retry condition hides the reason the extraction cannot finish.

Maintain a completion ledger

Assign each partition a stable internal identifier and states such as pending, succeeded or failed. Store the expected range or entity subset, response row counts and output location. A retry should replace the same partition result after verification rather than append another copy to the combined report.

If a smaller request still exceeds the limit, subdivide that partition again. Preserve the parent-to-child relationship and mark the parent as replaced by its children. Without that record, a later merge can accidentally include both a successful parent result and its subpartitions.

The pagination completeness guide provides related extraction controls, but do not invent a cursor for this endpoint. The shared principle is complete coverage; the mechanism here is explicit partitioning.

Recombine with checks that fit the data

Verify that the manifest covers the original scope with no gaps or overlaps. Check duplicate row keys using the output grain: entity, date, breakdown and event identity as applicable. Preserve null monetary values and distinguish no returned row from an explicit zero under the selected report options.

Compare a small independently retrievable slice with the same slice in the combined result. This catches boundary and merge errors without pretending that one sample proves every row correct. Where possible, compare additive totals against a compatible unsegmented control query.

Finally, label the extraction complete only when every leaf partition has succeeded and been merged once. Preserve a report snapshot with the manifest and retrieval times because sequential requests can observe updates at different moments. The finished artifact should explain both what the report includes and how completeness was verified, so an operator can rerun a failed piece without rebuilding or duplicating the entire dataset.

Sources and scope

Recover an oversized dedicated conversion report using non-overlapping partitions and verified recombination.

Working methods and examples are editorial suggestions. Check current platform requirements and available features before implementation.

Your next chapter

See what campaign reporting covers.

Explore reporting in AthillyAds and how it fits alongside your own measurement of enquiries, purchases and other business outcomes.