Birthday Gift
The one reward that runs on its own. A clock you schedule for MEMBER_BIRTHDAY_GIFT_PROCESSOR in the
Scheduler gives each member of the classes it names either
points (a currency, an amount, a validity in months — 12 if left empty) or one new ticket of each voucher
it lists. No screen in Membership Admin sets it up: you pick the processor under Select Processor and
type its settings on the Json tab, which opens empty. GadgetSphere’s version — 500 GSPTS for Gold
members, valid three months — is:
{
"gift_type": "POINTS",
"check_frequency": "DAILY",
"point_currency": "<guid of GSPTS>",
"point_amount": 500,
"points_validity_in_months": 3,
"member_class_guids": ["<guid of GOLD>"],
"send_mail": false
}Four things the Json tab will not tell you:
- The run keeps no record of who it has gifted. With
DAILYit picks members whose birthday is today; with anything else it picks everyone born this month. So aDAILYgift needs a clock that fires once a day, and a monthly gift a clock that fires once a month — the platform’s own helper pairs them the same way, daily forDAILYand on the 1st otherwise. A monthly gift on a daily clock gives every member born that month the gift every day; Run Now gives it again. - The class list must be there.
[]means every class; leaving the key out stops the run with an error before anyone is gifted. The classes and the point currency are named by their internal identifier (GUID), not their code. - A member with no date of birth is never picked, and with
DAILYa 29 February birthday matches only in a leap year. - A birthday voucher belongs to the member’s linked customer. The ticket is assigned to the customer record the member is linked to, unless the voucher allows anonymous use — and redemption on a bill checks the ticket against the bill’s customer. A staff card linked to a company account puts the birthday voucher on the company (the member who is not the customer).
Birthday points are written as an adjustment line and added straight to the stored balance, so they are spendable at the till the moment the run finishes. A points gift sends no e-mail even when the Json asks for one; a voucher gift sends one per voucher to members with a valid address. We have no record of the gift having run in production yet: treat the first run as the test, on a class that holds only a test member. A seasonal campaign builds one end to end.
When the birthday gift goes wrong
| Symptom | Cause | Fix |
|---|---|---|
| Members got birthday points every day this month | A monthly gift on a daily clock | Change the clock to once a month; remove the extra lines with a negative Add Point Adjustment per member |
| The birthday clock fired and nobody got anything | The class list is missing from the Json, the members have no date of birth, or a gifted voucher’s serial or softpin length is outside 6-30 | Fix the Json or the voucher; Run Now reports success even when the job fails inside, so check a member, not the run |
A birthday voucher used on a bill stays UNREDEEMED | The ticket is assigned to the member’s linked customer, and the bill is for another customer | Put the member’s own customer on the bill, or allow anonymous use on the voucher |
The gift does not remember: it gives once per run to whoever matches, deleted members included; the clock’s frequency is the only thing between a member and a second gift.
How you know it worked
For the birthday gift, the test member’s Point Transaction tab shows an ADJ line with the remark
BIRTHDAY POINTS!!! — once, not once per run.
Read next
- Rewards Setup — the other ways a member gets something back.
- How member rewards work — what a member’s bill writes, and the order to build rewards in.