turnley.dev

PHP and MySQL code for faucet operators

Tools & Calculators

ADL-009

Milestone-ladder offers are advertising, not inventory

The $400 offer is an 18-step ladder paying per step, with almost all of it behind repeated real-money purchases. Designing your economy around it means designing for an event that never fires.

Offerwall headline figures are the sum of a milestone ladder. One game offer advertised at a few hundred dollars pays out across roughly eighteen steps, and the great majority of the total sits behind repeated purchases that a user earning pennies is never going to make.

This matters because it wrecks economy design. If you take the headline figure as the top of your range, your inventory appears to span a million to one — a one-cent shortlink against a four-hundred-dollar deposit offer — and no single conversion rate can serve both ends. You end up building stake tiers, spin banks and fractional carry for a case that does not occur.

The working range is the first few rungs: roughly a cent to a few dollars per conversion. Design for that, and treat the ladder's upper steps as the rare bonus they are.

PHP
/**
 * Postbacks fire per completed STEP, so one offer produces several events
 * with the same offer id and increasing step rewards.
 *
 * What this means for your rate: compute from what actually lands, not from
 * the advertised totals.
 */
function observed_conversion_value(PDO $pdo, int $days = 30): array
{
    $rows = $pdo->prepare(
        'SELECT type,
                COUNT(*)                        AS events,
                SUM(gross_units)                AS gross,
                MAX(gross_units)                AS biggest,
                SUM(gross_units) / COUNT(*)     AS mean_units
         FROM revenue
         WHERE created_at >= DATE_SUB(NOW(), INTERVAL ? DAY)
         GROUP BY type'
    );
    $rows->execute([$days]);

    $out = [];
    foreach ($rows->fetchAll(PDO::FETCH_ASSOC) as $r) {
        // The median matters more than the mean here: one whale step drags
        // the mean somewhere no real user lives.
        $out[$r['type']] = [
            'events' => (int) $r['events'],
            'mean'   => (int) $r['mean_units'],
            'median' => median_units($pdo, (string) $r['type'], $days),
            'max'    => (int) $r['biggest'],
        ];
    }
    return $out;
}

Using it

Rate your own currency against the median conversion, not the mean and certainly not the headline.

Watch the first month of real postbacks before fixing a rate. Thirty days of data settles arguments that no amount of modelling will.

If a rare large conversion does land, a daily release cap turns it into a fortnight of return visits instead of one enormous balance.

What bites people

A deposit-based offer completing for one of your users is more likely to be fraud than a windfall. Check it before it is withdrawn.

Do not display the advertised headline figure on your own task list. The user who chases it and gets the first rung will say your site lied.

This one touches real money. Point it at a throwaway wallet and watch a full cycle before you trust it with a live balance.

Also in Ad Networks and Offerwalls