Common issues

This article collects the issues that come up most often while building a flow in the Flow & Paywall Builder, each with its cause and its fix.

A flow won’t preview or publish

Can't publish yet dialog reporting that three cards on the screen still need a product

You may encounter the following errors when you try to preview or publish the flow:

MessageCause and fix
No product selectedA product card has no product. Pick one, or delete the card.
This product no longer exists, This offer no longer existsThe product or offer was deleted from your Dashboard. Pick another one where it’s used, or use Replace in N places on the Missing entry in the Products panel to fix every use on the screen at once.
This product is off this screen, This offer is off this screenA text variable, condition, or action refers to a product that isn’t on the screen’s list, for example after you removed it in the Products panel. Add the product back in the panel, or edit the reference.
Offer requiredoffer_price, offer_billing_period, or offer_full_duration is used with a product that has no offer. Pick an offer for the product, or use a prod_* variable instead.
Product reference is invalidA product reference is malformed. Re-select the product.
Purchase action has no product to buyA Purchase action has no product, either left empty or pointing at a deleted card. In the element’s Interactions tab, set Product to a product or to products.selectedProduct.
Select product action has no product to selectThe card a Select product action pointed at is gone: deleted, moved out of its product group, or on another screen. In the element’s Interactions tab, point the action at a card on this screen.
Flow has no screens, Screen ”…” has no elementsAdd content to the empty screen, or delete it. A flow that carries only remote config content is exempt.
Invalid interaction actionAn action is incomplete: Open URL without a URL, Navigate to screen with no destination, Set variable with no assignment, Custom without an Action ID, Show alert with neither title nor message, Show or Hide with no element, a web-payment Purchase with no Web Paywall URL. Open the element’s interactions and complete or remove the action.
Missing navigation targetA Navigate to screen action points at a screen that was deleted. Pick an existing screen or remove the action.
Missing product target, Invalid product target, Product target on another screen, Ambiguous product target, Select Product inside a componentA Select product action targets a card that was deleted, isn’t in a product group, is on another screen, shares its element ID with an element on another screen, or sits inside a footer or header shared across screens. Point the action at a card in a product group on the same screen, with a unique ID.
Missing selectable groupAn element points at a selectable group that no longer exists. Reconnect it, or recreate the group.
Invalid visibility conditionA conditional visibility rule is incomplete. Complete it in the condition builder.
Localized conditional text mismatchA conditional text has different branches in different locales. Give every locale the same conditions.
Missing product referenceAn older flow uses a product that isn’t registered on the screen. Open the screen and add the product in the Products panel.

Preview the flow in the Adapty app regularly while you build. A flow that can’t publish won’t load there either, and the error message names the issue.

Tip

To find out whether your flow is ready for production, run the flow-audit skill. It checks what publication errors don’t: dead buttons, store compliance, unfinished copy, and translation coverage. For each issue, the report names the element and its screen.

Publishing fails with “Something went wrong” and no details

Something went wrong notification after a failed publish, with the support address and the Request ID to copy

The publish request failed on the Adapty side, not because of your flow. Your live version is unchanged. Wait a few minutes and publish again. If it fails again, copy the Request ID from the notification and send it to support@adapty.io so the team can locate the failed request.

An offer doesn’t apply at purchase

The builder only checks that the offer still exists in Adapty. Whether the discount applies is decided by the store at purchase time: introductory offers depend on the customer’s eligibility, and App Store promotional offers need a valid In-App Purchase Key. Both cases are covered in Product and price discrepancies.

An offer price is empty in the preview

The builder preview can’t reach the stores, so offer_price, offer_billing_period, and offer_full_duration show the variable name in braces instead of a value. They resolve when the SDK renders the flow in your app. To preview the conditions that depend on the offer type, see Preview products and offers.

Publishing fails after entering a shorthand hex color

Enter every color as exactly six hex digits, such as #FFFFFF. The color field accepts a shorter value and never expands it, so a shorthand such as #FFF reaches the SDK configuration malformed and the publish is rejected. Opacity is unrelated — the same value fails at 100% opacity. A four-digit value is the exception that costs the most: it publishes, and renders a color you didn’t pick.

Typography edits don’t reach an element state

Once a state, such as Selected, has its own typography settings, edits to the Default state’s typography — including applying a different text style — don’t affect that state. Edit the state’s typography directly.

Elements lose their styling after a text style is deleted

Deleting a text style doesn’t copy its settings into the elements that use it: those elements fall back to default typography. Before deleting a style, reassign the affected elements to another style or set their typography manually.

Conditions and variables break after an element ID change

Conditions and text variables reference elements by Element ID, and changing the ID doesn’t update the references — they silently stop resolving. Set the Element ID before referencing it. If you have to change it, update every condition and variable reference to match. The exception is progress-bar segments: renaming a segment updates its references automatically.

A condition or variable resolves to an empty value

The variable picker lists fields from every screen, so a condition or text variable can reference an input the user hasn’t filled in yet. At runtime, such a reference resolves to an empty value. Reference only fields collected earlier in the flow.

A Set variable action doesn’t change the selected product

Which product is selected isn’t a variable you can assign, so Set variable can’t move the selection. Use the Select product action instead.

An image or video won’t upload

A file outside the Flow & Paywall Builder’s media limits won’t upload. Verify the file against the Image and Video requirements:

ElementFormatsMaximum file sizeOther limits
Image.JPG, .PNG, .WEBP20 MB
Video.MP4, .WEBM50 MB30 seconds maximum; 640×640 pixels minimum

These formats aren’t supported:

  • Animated GIFs and animated WEBPs: To add motion, use a Video element instead.
  • SVG: Export the file as PNG or WEBP. For icons, you don’t upload anything — the Icon element draws from the bundled Tabler Icons library.

A footer renders only on a screen where Vertical scroll is enabled. Enable Vertical scroll in Screen settings > Scroll.