Customer story
iStoria — Learn English Easily
How iStoria runs its referral program on DecTog
iStoria teaches English on iOS and Android, built in Flutter. Its learners invite friends with a personal link, and inviters earn free premium days. DecTog follows each invitation from the tap, through the App Store or Google Play, to the friend's first launch and signup.
A learner shares their referral link. A friend installs the app from the store; on the first launch DecTog credits the install to the inviter and the app shows who invited them. When the friend signs up, DecTog records the referral and the inviter gets free premium days.
- English learning, on iOS and Android
- App
- Flutter and flutter_dectog
- Built with
- Its referral program, live in the app
- Uses DecTog for
- Free premium days for the inviter
- Reward
- Get iStoria
One DecTog link that sends each phone to its own store.
- Get the app
We were paying thousands of dollars for our referral tracking. Now every learner gets their own link from one call in our Flutter app, DecTog records who invited whom on the server, and that record is what grants our free premium days.
Abdelrahman SaedLead Mobile Engineer at iStoriaAbdelrahman also builds DecTog.
The job
What a referral program needs
A link per user
One link that names the person who shared it, the same link every time they share.
A record no app can fake
Proof that the friend arrived through that link, kept where a modified app cannot change it.
A moment to reward
A signal when the friend has really joined, not when they tapped, so rewards go to real invitations.
How it works
From an invitation to a reward
iStoria grants the inviter's free premium days from DecTog's referral record and shows each new learner who invited them. The referral guide documents every step.
- 01Each learner gets a linkcreateReferralLink returns the learner’s referral link, creating it on the first call and returning the same one after. It works with the app’s SDK key, which cannot create any other link.
- 02A friend taps itWith the app installed, it opens. Without it, the friend goes to the App Store or Google Play with the tap attached: the store install referrer on Android, the copied link on iOS.
- 03The install is credited on the serverOn the first launch DecTog credits the install to the inviter’s link. The inviter is read from the link itself, never from the tapped URL or the app, so nothing on the phone can move the credit.
- 04The friend sees who invited themThe install result names the inviter, from the same server record, so iStoria shows each new learner who invited them on the first launch.
- 05Signing up records the referralWhen the friend signs up and the app calls identify, the server records a referral and sends a signed referral.converted webhook. Self-referrals from the inviter’s own device or network are flagged. iStoria grants the inviter’s free premium days from that record.
Flutter · flutter_dectog
// The learner's own link: created once, the same one afterfinal link = await dectog.createReferralLink( customerId: learner.id,);share(link.url);// On the friend's first launch: who invited themfinal install = await dectog.getAttributionData();final inviter = install?.link?.referrerCustomerId;// When they sign upawait dectog.identify(customerId: newLearner.id);Build a referral program like iStoria's
The same SDK call, the same server record and the same webhook, in a Flutter or React Native app.