Paystack with Softr and Airtable
The flow: Softr page shows a "Buy" button linking to a Paystack payment link. Customer pays. Zapier catches charge.success from Paystack → finds the matching Airtable record by customer email → updates a "paid" field to true. Softr reads the Airtable record and shows/hides content based on the paid field. No custom code required.
System Architecture
Components:
- Airtable — database with a Members table: Name, Email, MembershipType, PaidStatus (checkbox), AccessExpiry (date).
- Paystack Payment Link — one link per tier (e.g., Monthly Membership). Include a custom field for the customer's email.
- Zapier — connects Paystack to Airtable: trigger on charge.success, search Airtable for the record with matching email, update PaidStatus to true.
- Softr — web app built on the Airtable base. Uses Softr's conditional visibility to show paid content only to users where PaidStatus = true.
Setting Up the Zapier Automation
- Create a new Zap. Trigger: Webhooks by Zapier → Catch Hook (or use the Paystack trigger if available).
- In Paystack dashboard → Settings → Webhooks, add the Zapier hook URL.
- Add a Filter step: only continue if
eventequalscharge.success. - Add an Airtable → Find Record step: search the Members table where Email matches
{{data.customer.email}}from the Paystack webhook. - Add an Airtable → Update Record step: set PaidStatus to true, set AccessExpiry to today + 30 days (use Formatter to calculate).
- Turn on the Zap.
Test by making a payment with a test email that matches an Airtable record. The Airtable record should update within seconds of the Paystack webhook firing.
Gating Content in Softr
In Softr:
- Connect Softr to your Airtable base.
- On paid content blocks, use Visibility Conditions: show only when Logged-In User's PaidStatus = true.
- Set up Softr's user authentication — users log in with the same email they used to pay.
- Softr matches the logged-in user's email to the Airtable Members table record, reads PaidStatus, and shows or hides the content block accordingly.
Learn More
See Paystack Payment Links guide for creating payment links.
Key Takeaways
- ✓Create a Paystack payment link for each product or membership tier.
- ✓Use Zapier to catch charge.success and update the matching Airtable record's payment status.
- ✓Softr reads Airtable records in real time — gated content appears as soon as Airtable is updated.
- ✓Use the customer email (from Paystack webhook) as the lookup key to match Airtable records.
- ✓For recurring memberships, use Paystack Plans + charge.success subscription events to extend access.
Frequently Asked Questions
- What if a customer uses a different email to pay than they registered with in Softr?
- This is the main weak point of the email-based matching approach. Add a custom field to your Paystack payment link asking for the customer's Softr account email, and use that field (not the billing email) for the Airtable lookup. Alternatively, include a pre-filled email parameter in the payment link URL from Softr so the logged-in email is passed automatically.
- Can I use Make instead of Zapier for the Paystack-Airtable connection?
- Yes. Make (make.com) works the same way — Webhook trigger (paste URL in Paystack), filter on event = charge.success, Airtable Search Records, Airtable Update Record. Make is often cheaper than Zapier at higher volumes.
- Does this work for recurring payments?
- For subscriptions, use Paystack Plans. When a subscription renews, Paystack fires charge.success with the subscription reference. Your Zapier automation catches this and extends the AccessExpiry date in Airtable. Set AccessExpiry to 31 days from the charge date (use Zapier's Formatter Date/Time step). If a subscription lapses (invoice.payment_failed), update PaidStatus to false.
Ready to build real-world apps?
Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.
Apply to the McTaba Marathon