> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# postPurchaseFlow

> The store's post-purchase flow. Null without a Shopify integration. POST_PURCHASE_FLOW_UNREADABLE (409) when the stored flow can't be read.

**Required scopes:** [`checkout_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-checkout_read)

## Returns

**postPurchaseFlow** `[PostPurchaseFlow](/docs/api-reference/v3/reference/checkout/post-purchase-flow)`

The store's post-purchase flow: which upsell pages each order gets. There is one, and no history of it: it changes for every order the moment `postPurchaseFlowPublish` succeeds. A page attached to a checkout experience wins over the flow, and over any A/B test in it, for orders placed through that experience.

**fields**

**edges** `[\[PostPurchaseFlowEdge!\]!](/docs/api-reference/v3/pagination)` *required*

Its edges.

**fields**

**from** `String!` *required*

The step it leaves, or `"trigger"` for the start.

**port** `String!` *required*

The port it leaves by: `next` from the start; `accept` or `decline` from a page; `matching` or `nonMatching` from a segment; a treatment id from a split.

**to** `String!` *required*

The step it leads to.

**locked** `Boolean!` *required*

Whether post-purchase is locked for the store, which refuses writes.

**revision** `String!` *required*

A hash of the stored flow, for `expectedRevision`. `"none"` with no flow.

**steps** `[\[PostPurchaseFlowStep!\]!](/docs/api-reference/v3/reference/checkout/post-purchase-flow-step)` *required*

Its steps. Empty with no flow.

**fields**

**id** `String!` *required*

The step's id. Publishing gives every step a new one.

**segment** `[PostPurchaseSegment](/docs/api-reference/v3/reference/checkout/post-purchase-segment)`

Which orders a SEGMENT step matches.

**fields**

**blocks** `[\[PostPurchaseSegmentBlock!\]!](/docs/api-reference/v3/reference/checkout/post-purchase-segment-block)` *required*

Its blocks.

**conjunction** `[PostPurchaseSegmentConjunction!](/docs/api-reference/v3/reference/checkout/post-purchase-segment-conjunction)` *required*

How its blocks join.

**split** `[PostPurchaseFlowSplit](/docs/api-reference/v3/reference/checkout/post-purchase-flow-split)`

A SPLIT step's A/B test.

**fields**

**description** `String`

What it tests.

**id** `ID!` *required*

The test's id.

**name** `String!` *required*

Its name.

**treatments** `[\[PostPurchaseAbTestTreatment!\]!](/docs/api-reference/v3/reference/checkout/post-purchase-ab-test-treatment)` *required*

Its arms, control first.

**title** `String`

A SEGMENT step's name.

**type** `[PostPurchaseFlowStepType!](/docs/api-reference/v3/reference/checkout/post-purchase-flow-step-type)` *required*

What the step does.

**upsellPage** `[UpsellPage](/docs/api-reference/v3/reference/checkout/upsell-page)`

A PAGE step's page. Null on the others, and when the page was deleted.

**fields**

**banner** `[UpsellPageBanner!](/docs/api-reference/v3/reference/checkout/upsell-page-banner)` *required*

Its banner.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When it was created.

**excludedProductTags** `[String!]!` *required*

Tags that keep a product out of recommendations.

**id** `ID!` *required*

The page's id.

**inUse** `Boolean!` *required*

Whether the live flow or a live checkout experience uses it. Changing a page in use takes `confirmLiveChange`, and it can't be deleted.

**locked** `Boolean!` *required*

Whether post-purchase is locked for the store, which refuses writes.

**name** `String!` *required*

The merchant-facing name.

**products** `[\[UpsellPageProduct!\]!](/docs/api-reference/v3/reference/checkout/upsell-page-product)` *required*

The products it offers, one to four.

**timer** `[UpsellPageTimer!](/docs/api-reference/v3/reference/checkout/upsell-page-timer)` *required*

Its countdown timer.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When it last changed.

## Example

```graphql theme={null}
query {
  postPurchaseFlow {
    locked
    revision
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.