S Subster

Handoff to a developer

You give the engineer what they need and get back what you need: your part takes about ten minutes, the engineer's integration from a few hours to a working day.

Before you start

You can launch the funnel and connect the app later: until the connection is set up, the buyer gets access with the code from the email. There is one exception — a paywall with a “Return to app button” block: such a funnel will not publish until the section's settings are saved and every price on this screen has an access level (step 5).

Step 1. Answer the question on first entry

Open the “Settings” section → the “App connection” tab. The first entry asks one thing: who in your app decides that a person has a subscription — and offers four answers.

For the first launch, choose “Our library inside the app”: we give ready code, the engineer builds it in. Change the answer later with the “Change” button. The other three answers are for special cases:

If youAnswerWhat changes
the app has its own server, and it decides access“Your own server”there is no test mode on this path: the engineer checks with a test purchase — “Pricing and payments”
subscriptions are run by Adapty or RevenueCat“Subscriptions live in an outside service”in the “Where to deliver access” branch, choose the service; the engineer enters its keys — “Adapty and RevenueCat”. The cabinet does not remember this answer yet: after a reload, choose it again
the app does not need to be linked to funnels“I am not connecting an app”the tab is renamed “Keys and webhooks”: it keeps the key for requests from your server and events to your server — the engineer needs these — plus sales reports to a partner's tracker, whose address you enter: “Ad networks and pixels”

The cabinet hides settings your answer does not need — skip the steps below about hidden ones.

The “Where the button leads after payment” section — two fields, App Store and Google Play. Nothing else in the section needs filling: the cabinet set the rest itself, or not everyone needs it.

Then click “Save settings” at the bottom of the tab. This button saves both the links and everything you change in the steps below, including test mode.

Step 3. Invite the engineer to the project

The “Send the instructions to the developer” button is drawn, but sends no email.

Instead, give the engineer the project admin role — see “Project and team”. Then they take everything for the integration on the “For developers” tab themselves, and you forward nothing by email.

These are our keys, not Stripe keys: they look similar but are taken here, and the Stripe dashboard does not have them.

We have no separate “developer only” role, so the engineer gets all project rights except transferring ownership and money: Stripe keys, cancellations and refunds stay with the owner — the roles table.

The engineer takes the rest on the “For developers” tab themselves. You pass them two links:

Ask in return for:

  1. The word by which the app recognizes paid access (for example, “premium”). The engineer chooses it in the code, so ask for the exact spelling, down to letter case. You will need it in step 5.
  2. Entering the build values in the “If the app is already installed — open it right away” branch: for iOS — Team ID and Bundle ID, for Android — the package name and the signing certificate fingerprint from Play Console. The signing key, not the upload key: a mixed-up fingerprint breaks the move into the app silently.
  3. A date and a message when they finish: on it you turn off test mode.

While the engineer works, turn on test mode: we answer the app “there is a subscription”, so they need not pay for real. Where to turn it on — at the end of the page.

Step 5. Assign an access level to the price

The engineer named the word — that is the access level. Open the “What to open in the app after the payment” branch. The working fields there are hidden behind the “I have several different levels” checkbox — tick it even if there is one level: the field at the top is locked. The price is chosen from the project catalog, one price — one pair. Save the finished pairs with the “Save settings” button.

Enter the word exactly as the engineer named it. We do not check or correct it: what you enter goes to the app as is — same spaces, same letter case.

Without such a pair the app receives the price identifier. If you raise the price, a new one appears in Stripe with a new identifier, and the app will not recognize it: the paid content will not open for the person who paid. So add a pair for every new price, even if the other pairs already exist.

How to tell everything is set up

At the top of the “Main” tab is a status bar:

What else is in the section

The rest either works by itself or is for the engineer:

WhereDo you need it
the “How the app recognises your buyer” branchno, “Automatically, by the platform” is already set there. “Through an ad tracker” is chosen if you use AppsFlyer or Adjust — what to paste into the tracker's dashboard is in “Funnel analytics”. “Do not recognise by device” — the buyer gets into the app only with the code from the email or by the link
the “For developers” tab: access keys, events to your serverno, the engineer sets this up on their own track
the “Sales reports to the tracker” block thereyes, if traffic comes through a partner network: you enter the address from the partner's dashboard — “Ad networks and pixels”
the “SDK logs” tab — what the app sentno, on a “paid but no access” complaint the engineer looks there — “Troubleshooting”

Turn off test mode before the first buyers

The mode lives on the same “Main” tab, in the “What else the connection can do” group: expand the “Check the connection before the first payment” branch and click “Turn on” or “Turn off test mode”. Then click “Save settings” at the bottom of the tab — without it nothing changes on the server.

Turn it off once the engineer reports done, and before the funnel goes live. While it is on, we answer “there is a subscription” to any visitor of your funnels, even one who did not pay — that is, we give paid content away for free. It does not turn itself off and does not block publishing.

While the mode is on, an orange “Test mode is on.” bar hangs at the top of the section with a “Turn off” link. The link works the same as the button in the branch: the bar disappears at once, and the mode turns off only after “Save settings”.

Next