Supabase Required
Database + auth. Copy URL and anon key from Supabase → Settings → API.
Meta App Required
Instagram + Facebook publishing. App ID and Secret from developers.facebook.com. System User Token from Meta Business Suite.
Cloudinary Required
Image/video hosting used before posting to Meta.
n8n Publish Webhook Required
n8n endpoint that handles the publish pipeline. Use the Production URL.
n8n Review Webhook Optional
Fires when a draft is submitted for review. Set to send a manager email.
n8n Variation Engine Webhooks Optional
Powers the per-location Variation Composer. Without these, Generate / Publish on /compose-variation silently no-op. Use the Production URLs.
AI Relay (Ripple) Optional
Powers the Ripple assistant. An n8n endpoint that calls Claude server-side — the browser never holds the API key (DEC-011). Without it, Ripple stays read-only and can't chat. Use the Production URL.
Research relay Optional
Powers competitor research on the Research page. An n8n endpoint that reads competitor posts and calls Claude server-side — the browser never holds the API key (DEC-011). Without it, Research can't run an analysis. Use the Production URL.
Email Provider Optional
Used for invitations and report digests. illypad uses Resend.
Google Analytics 4 Optional
Website analytics alongside social. Measurement ID from GA4 property (G-XXXX).
location_id (re-running the same file updates, never duplicates); stores without a token land dark (excluded from publishing) until a token is added.
location_ref (→ locations.location_id), so re-uploading the same file updates rows instead of duplicating them. Stores with a blank system_user_token are created but excluded from publishing until a token is added. Header row required; columns: location_ref, store_name, city_name, store_address, phone_number, manager_name, group_name, neighborhood, facebook_page_id, facebook_page_name, instagram_handle, instagram_user_id, system_user_token, neighborhood_vibe, local_landmark, community_tie, local_notes.
| Name | Role | Clients | Last active | Actions |
|---|
Team pay
Everyone earns for planning a post and again for creating it. This is what each person has done since you last paid them.
| Team member | Planned | Created | Owed now | Last paid | Paid this year | Actions |
|---|
Who's paid per post
Payment history
| Location | Client | Status | Expires | Last verified | Actions |
|---|
Post pipeline
Every post, grouped by where it is on the line — idea through published. Open one to see who has it, how long it has been there, and everything that has happened to it.
| Stage | Post | Client | Waiting on | Last moved |
|---|
| Date | Client | Location | Type | Message | Raw | Actions |
|---|
Caption Templates
Manage reusable caption templates for the active client.
Content Pillars
Define content categories for the active client.
Post Goals
Set a target per post type — analytics judges each post against its own type's goal, not just the feed average.
| Type | Metric | Target | Actions |
|---|
Scheduled Content (Next 7 Days)
Reports
Reports are all in one place now. Generate one for a single client, or the same one for several clients at once — same page, same settings.
Generate reports for all clientsAgency Branding
Customize how illypad appears to your team and clients.
Identity
Colors
Footer & Contact
Email Branding
Brand Kit Auto-Extract
Brand Audit
Location Distinctives
Curated local facts per location. The AI uses these to draft genuinely local, non-duplicate captions (it uses them only when they fit, and never invents details). Fields: store name, neighborhood vibe, local landmark, community tie, local notes.
Bulk CSV import
Header row required. Columns: location_ref, store_name, neighborhood_vibe, local_landmark, community_tie, local_notes. Rows are matched to locations by location_ref; unmatched or malformed rows are reported and skipped.
| Location | Store name | Distinctives | Actions |
|---|
Canva sync
Pull approved designs from a client’s Canva folder straight into their Media library. Each design lands tagged to the client, ready to schedule. A person still curates in Media before anything publishes — nothing here goes live on its own.
Sync connection
Paste the Canva pull address (from setup), then use Pull now to sync every active folder immediately. Otherwise it syncs on its own every 20 minutes.
| Target | Canva folder | Active | Last sync | Actions |
|---|
Connected folders
A registry of the Google Drive folders connected to each client. Imports happen on demand — anything in a connected folder can be pulled into the client’s Media library (images right away, videos when they’re first used in a post). A person still curates in Media before anything publishes.
Connected folders are imported on demand — open a client’s Media page and paste a Drive link to import from a folder or a single file.
| Target | Drive folder | Active | Last sync | Actions |
|---|
Competitor benchmarks
The Instagram accounts each client is measured against — corporate brand, national chains, the shop across the street. The nightly job pulls each one’s public follower and post counts so a client can see how they stack up. Only public Business/Creator accounts resolve; private or personal handles are stored quietly as “not found”.
| Client | Instagram handle | Label | Active | Actions |
|---|
Onboard Pages
Discover the Facebook Pages the agency can manage, then map each one to a client and location. Mapping seeds the location and stores its publishing connection securely on the server — the token never touches your browser. Safe to re-run: a Page already mapped won’t be duplicated.
Prospect Audit
Score a prospect’s social presence before you onboard them — run an audit, review the scorecard, and save it as a branded PDF.
Run an audit
No audit loaded
Enter an Instagram handle and click "Run Audit" to generate a prospect scorecard.