Connect Bubble to Agorapulse using the API Connector with an OAuth 2.0 client-credentials Bearer token stored in a Bubble database. The OAuth token exchange (POST /oauth/token with client_id and client_secret) must happen in a Backend Workflow — the client secret cannot reach the browser. Agorapulse API access is effectively Enterprise-tier only: confirm with your account manager before building anything. The primary use case is a branded social inbox for community managers.
| Fact | Value |
|---|---|
| Tool | Agorapulse |
| Category | Social |
| Method | Bubble API Connector |
| Difficulty | Intermediate |
| Time required | 2–3 hours |
| Last updated | July 2026 |
Building a Branded Social Inbox in Bubble with Agorapulse: Security and Access Gate First
Agorapulse's primary differentiator is the unified social inbox — one queue for all inbound comments, DMs, and mentions across Twitter/X, Facebook, Instagram, LinkedIn, and TikTok. Community managers who currently log into Agorapulse's own dashboard can instead work in a Bubble app you've built — branded with your organization's look and feel, integrated with your CRM data, and tailored to your moderation workflow.
Before building, address two realities that gate the entire integration:
**Access gate: Account manager confirmation is required.** Agorapulse API access is not available through a self-serve developer portal. It requires confirmation from your Agorapulse account manager, and access is effectively limited to Enterprise-tier accounts. Starting the build without confirmed API access will result in 401 or 403 errors regardless of implementation quality. Contact Agorapulse support before writing a single Bubble workflow.
**Security gate: Client-credentials flow requires a Backend Workflow.** The Agorapulse OAuth flow uses client_id and client_secret. The client_secret is a sensitive app credential — it must never appear in client-side code or a browser-visible API call. In Bubble, this means the token exchange POST to /oauth/token must run in a Backend Workflow (an API Workflow in Bubble), not in a front-end button click action. The resulting Bearer token is stored in a Bubble database record and referenced dynamically in API calls. This Backend Workflow requires a paid Bubble plan — the free plan cannot run Backend Workflows.
Once both gates are cleared, the integration delivers genuine value: community managers can see and reply to all inbound social messages without needing Agorapulse credentials or access to Agorapulse's interface.
Integration method
Agorapulse API uses OAuth 2.0 client credentials — client_id and client_secret exchange for a Bearer token at /oauth/token. The exchange and token storage run in a Bubble Backend Workflow (paid plan required). The API Connector's Authorization header dynamically references the stored token from the Bubble database.
Prerequisites
- An Agorapulse account with API access confirmed by your account manager — API is not available on Free or standard Pro plans
- OAuth client credentials (client_id and client_secret) obtained from Agorapulse after API access is granted
- A Bubble account on a paid plan — Backend Workflows (required for client-credentials token exchange and scheduled token refresh) are not available on the Free plan
- At least one social profile connected to your Agorapulse account
- Basic familiarity with Bubble's Backend Workflows (API Workflows) section
Step-by-step guide
Confirm Agorapulse API Access and Obtain Client Credentials
Contact your Agorapulse account manager directly — by email or via your account dashboard support channel — and confirm that your account subscription includes API access. Provide your use case (custom Bubble moderation interface) and ask for: 1. Confirmation that API access is available on your plan 2. OAuth client_id and client_secret for your application 3. Documentation for the specific API endpoints available to your account (inbox, scheduling, profile management) 4. Your account's rate limits per API endpoint Do not attempt to find Agorapulse API credentials through a self-serve developer portal — there is no public portal. Building the integration before receiving confirmed credentials and documentation from Agorapulse support will result in 401 or 403 errors regardless of implementation. Once you receive your client_id and client_secret, store them securely in a password manager. You'll enter them as Private parameters in Bubble's API Connector — they should never appear in your Bubble app's visible interface, in Bubble database fields, or in any code visible to users. Also confirm the token lifespan with your account manager — this determines how frequently your scheduled token refresh Backend Workflow needs to run. Token lifespans are not publicly documented for Agorapulse and vary by account configuration.
Pro tip: Ask specifically about rate limits for the inbox endpoint — some accounts have tight per-minute limits on inbox polling. Understanding the rate limit before building prevents hitting it unexpectedly after go-live.
Expected result: You have written confirmation from Agorapulse that API access is enabled for your account. You have client_id and client_secret values stored securely. You know the token lifespan and rate limits for your account.
Create the AgorapulseToken Data Type and Backend Workflow for Token Exchange
In Bubble's Data tab, create a new data type called 'AgorapulseToken'. Add these fields: - access_token (text) — the current Bearer token for API calls - expires_at (date) — when the current token expires - last_refreshed (date) — for monitoring the refresh schedule Set privacy rules on this data type immediately: go to Data tab → Privacy → AgorapulseToken → add a rule that prevents any users from reading AgorapulseToken records through Bubble's Data API. Only server-side Backend Workflows should interact with this data type. Now go to Backend Workflows (requires a paid Bubble plan). Create a new API workflow named 'ExchangeAgorapulseToken'. This workflow should NOT be user-triggered — it runs manually from an admin page or on a schedule. In this workflow, configure an API Connector call (named 'Get Agorapulse Token') first: - Method: POST - URL: https://app.agorapulse.com/api/oauth/token - Body type: Form parameters URL-encoded - Parameters: - grant_type: client_credentials (static value) - client_id: <private: your_client_id> - client_secret: <private: your_client_secret> In the ExchangeAgorapulseToken Backend Workflow: - Step 1: Call 'Get Agorapulse Token' API - Step 2: Create or modify AgorapulseToken record: set access_token = token API result's access_token, expires_at = Current date/time + [verified token lifespan], last_refreshed = Current date/time Run this Backend Workflow manually once to create the initial token. Confirm the AgorapulseToken record exists in Bubble's Data tab with a valid access_token value.
1{2 "token_exchange_call": {3 "method": "POST",4 "url": "https://app.agorapulse.com/api/oauth/token",5 "body_type": "Form parameters URL-encoded",6 "parameters": {7 "grant_type": "client_credentials",8 "client_id": "<private: your_client_id>",9 "client_secret": "<private: your_client_secret>"10 }11 },12 "expected_response": {13 "access_token": "eyJhbGciOiJSUzI1Ni...",14 "token_type": "Bearer",15 "expires_in": 360016 },17 "data_type": {18 "name": "AgorapulseToken",19 "fields": {20 "access_token": "text",21 "expires_at": "date",22 "last_refreshed": "date"23 },24 "privacy": "No users can read via Data API"25 }26}Pro tip: The client_credentials grant_type means no user login is required — your app authenticates as itself, not on behalf of a specific user. This is the correct pattern for a server-to-server integration where one Agorapulse account powers your Bubble app's social inbox.
Expected result: The ExchangeAgorapulseToken Backend Workflow runs successfully. An AgorapulseToken record exists in Bubble's Data tab with a non-empty access_token field and an expires_at date in the future. Privacy rules prevent public read access to this data type.
Configure the API Connector with Dynamic Bearer Token
Go to Plugins → Add plugins → search 'API Connector' → Install (by Bubble, free). Click 'Add another API'. Name it 'Agorapulse'. Base URL: https://app.agorapulse.com/api Add a shared header: - Name: Authorization - Value: Bearer <dynamic: access_token> - This makes 'access_token' a dynamic parameter that must be provided with each API call The Private checkbox on dynamic parameters works differently from static ones. In each individual API call, when you add the access_token parameter, mark it Private at the call level. This ensures that even though the token value is sourced dynamically from the database at runtime, Bubble treats it as a server-side-only value. Add a second shared header: - Name: Content-Type - Value: application/json Save. Now in every Bubble workflow that uses an Agorapulse API action, you'll set access_token = 'Do a search for AgorapulseToken:first item's access_token'. This pattern keeps the token out of the browser. The workflow reads the token from the database server-side, passes it to the API Connector as a Private parameter, and the API call goes from Bubble's server to Agorapulse's server. The browser never sees the token value.
1{2 "api_name": "Agorapulse",3 "base_url": "https://app.agorapulse.com/api",4 "shared_headers": {5 "Authorization": "Bearer <dynamic: access_token (Private per call)>",6 "Content-Type": "application/json"7 },8 "workflow_token_sourcing": "access_token = Do a search for AgorapulseToken > First item > access_token"9}Pro tip: Name the dynamic parameter consistently across all calls — 'access_token' is the convention used here. When you build workflows that use Agorapulse actions, Bubble shows a field labeled 'access_token' — always map it to 'Do a search for AgorapulseToken:first item's access_token'.
Expected result: The Agorapulse API is configured in the API Connector with the dynamic Authorization header. Ready to add individual calls for inbox, scheduling, and profile management.
Build the Social Inbox Repeating Group
Add the inbox read call: - Name: Get Inbox Items - Method: GET - Path: /inbox (verify the exact endpoint path with Agorapulse's documentation provided by your account manager) - Parameters: status (dynamic: filter by unanswered, in_progress, done), platform (optional: filter by specific social network) - Use as: Data - Initialize with access_token from your stored AgorapulseToken and test parameter values After successful initialization, Bubble detects the response fields. Agorapulse inbox items typically include: id, text (message content), sender (nested object with name and social handle), platform, created_at, and status. On your page, add a repeating group: - Type of content: the API response type for Get Inbox Items - Data source: Get Inbox Items API call with access_token = search AgorapulseToken:first item's access_token, status = 'unanswered' Inside the repeating group, add: - Text element: Current cell's sender's name - Text element: Current cell's text (with max character display — use Bubble's 'truncate after 120 characters' format) - Text element: Current cell's platform (display as icon using a Conditional rule: when this cell's platform is 'INSTAGRAM', set icon to Instagram image; when 'TWITTER', set to Twitter/X image; etc.) - Text element: Current cell's created_at formatted as relative time ('2 hours ago') - Button: 'Reply' — triggers the reply workflow - Button: 'Mark as Done' — triggers a status update call Add filter buttons above the repeating group (All / Unanswered / In Progress / Done) that update a custom state 'InboxStatus' and trigger a re-fetch of the inbox with the new status filter.
1{2 "method": "GET",3 "url": "https://app.agorapulse.com/api/inbox",4 "headers": {5 "Authorization": "Bearer <dynamic: access_token (Private)>"6 },7 "query_parameters": {8 "status": "<dynamic: status_filter>"9 },10 "example_response": {11 "data": [12 {13 "id": "inbox_item_abc123",14 "text": "Love your product! When does the new feature launch?",15 "sender": {16 "name": "Jane Smith",17 "handle": "janesmith"18 },19 "platform": "INSTAGRAM",20 "created_at": "2026-07-08T14:22:00Z",21 "status": "unanswered"22 }23 ],24 "meta": {25 "total": 47,26 "page": 127 }28 }29}Pro tip: Add pagination handling from the start. Agorapulse inbox endpoints typically return paginated results. Check the 'meta' object in the response for total count and current page. Add a 'Load more' button that calls the same API with page+1 and appends results to your custom state list.
Expected result: The inbox repeating group displays inbound social messages from your Agorapulse account with platform icons, sender names, message previews, and timestamps. Filter buttons switch between unanswered, in-progress, and done queues.
Add the Reply Workflow with Confirmation Dialog
Add the reply POST call: - Name: Post Reply - Method: POST - Path: /inbox/{item_id}/reply (verify exact path with Agorapulse documentation) - Body type: JSON - Body: { "text": "<dynamic: reply_text>" } - Use as: Action - Initialize with access_token, a real inbox item ID from your test data, and a test reply text Warning from the brief: reply actions modify live social content in real-time. A mistaken reply to a comment goes public immediately. Always add a confirmation dialog before executing reply workflows. Build the reply flow: 1. User clicks Reply button on an inbox item in the repeating group 2. A popup opens showing: the original message (Current cell's text), a multiline text input for the reply, a 'Send Reply' button, and a 'Cancel' button 3. On 'Send Reply' click: show a second confirmation popup: 'Confirm: post this reply publicly to [sender name] on [platform]? This cannot be undone.' with Confirm and Cancel buttons 4. On Confirm: call Agorapulse 'Post Reply' API with access_token = search AgorapulseToken:first item's access_token, item_id = the inbox item's ID from the original repeating group row, reply_text = the reply text input's value 5. After successful reply: close all popups, show a toast notification 'Reply sent to [sender name]', update the inbox item's status to 'done' (call a separate status update API action or optimistically update the Bubble custom state) RapidDev's team builds custom community management tools in Bubble — for integrations with multiple social platforms and custom CRM tagging workflows, book a free scoping call at rapidevelopers.com/contact.
1{2 "reply_call": {3 "method": "POST",4 "url": "https://app.agorapulse.com/api/inbox/<item_id>/reply",5 "headers": {6 "Authorization": "Bearer <dynamic: access_token (Private)>",7 "Content-Type": "application/json"8 },9 "body": {10 "text": "<dynamic: reply_text>"11 }12 },13 "workflow_sequence": [14 "1. Reply button click → open Reply Compose popup",15 "2. Send Reply button → open Confirmation popup",16 "3. Confirm button → call Post Reply API",17 "4. Success → close popups, show toast, refresh inbox"18 ]19}Pro tip: Store the current inbox item ID in a custom state when the Reply button is clicked (e.g., custom state 'ReplyingToItemId' of type text). Pass this custom state value to the Post Reply API call when the user confirms. This avoids issues with repeating group cell context being lost when a popup opens.
Expected result: Clicking Reply on an inbox item opens a compose popup. Entering a reply and clicking Send shows a confirmation popup. Confirming posts the reply live to the social platform via Agorapulse. The sent item's status updates to 'done' in the inbox view.
Schedule the Token Refresh Backend Workflow
The Bearer token obtained via client credentials has a finite lifespan (verify the exact duration with Agorapulse). A scheduled Backend Workflow must refresh the token before it expires for production stability. Create a Backend Workflow named 'RefreshAgorapulseToken'. This workflow: - Step 1: Call the 'Get Agorapulse Token' API (the same token exchange call configured in Step 2) - Step 2: Make changes to the AgorapulseToken record: access_token = new token result's access_token, expires_at = Current date/time + [verified token lifespan], last_refreshed = Current date/time For client credentials flow, there is no refresh_token — you simply exchange client credentials again for a completely new access_token. This is different from Authorization Code flow (like Hootsuite) where a separate refresh_token is used. Set the refresh schedule based on your verified token lifespan. If the lifespan is 1 hour (3600 seconds), schedule the refresh every 50 minutes. If it's 24 hours, every 20 hours. Always schedule it before expiry, not at expiry. Go to Backend Workflows → Recurring events → Add event → select RefreshAgorapulseToken → set interval based on your verified token lifespan. Add a monitoring element to your admin page: display the AgorapulseToken record's expires_at and last_refreshed values. If expires_at is within 1 hour of the current time and last_refreshed is not recent, the refresh is failing — investigate Backend Workflow logs.
1{2 "refresh_workflow": "RefreshAgorapulseToken",3 "steps": [4 "Step 1: Call Get Agorapulse Token API (client_credentials grant — same as initial exchange)",5 "Step 2: Make changes to AgorapulseToken record: access_token = new value, expires_at = now + lifespan, last_refreshed = now"6 ],7 "schedule_note": "Set recurring event interval to 80% of token lifespan (e.g., every 50 min for 1-hour tokens, every 20h for 24-hour tokens)",8 "admin_monitoring": {9 "display": ["AgorapulseToken expires_at", "AgorapulseToken last_refreshed"],10 "alert": "Show warning if expires_at < now + 1 hour AND last_refreshed < now - [interval]"11 }12}Pro tip: Client credentials token exchange does not use a refresh_token — you re-run the full exchange with client_id and client_secret to get a new access_token. This means the client_secret must always be available as a Private parameter in the API Connector, and the Backend Workflow must always have permission to make this exchange call.
Expected result: The RefreshAgorapulseToken Backend Workflow runs on schedule. The AgorapulseToken record's access_token updates automatically before expiry. The last_refreshed field shows the most recent refresh time. The admin page token status indicator shows 'Token valid'.
Common use cases
Branded Social Inbox for Community Managers
Build a moderation interface inside Bubble where community managers see all inbound Agorapulse inbox items (comments, DMs, mentions) in a unified repeating group filtered by social platform and status (unanswered/in-progress/done). Each row shows the sender, platform, message preview, and an Assign or Reply button — without community managers needing Agorapulse access.
Inbox page load: Call Agorapulse API 'Get Inbox Items' with status=unanswered, platform=all. Store results in custom state 'InboxItems'. Repeating group shows: sender name, platform icon (Facebook/Instagram/Twitter), message preview (truncated to 100 chars), received timestamp. Reply button opens a popup with text input and Confirm Reply button that calls 'Post Reply' API with message_id and reply text.
Copy this prompt to try it in Bubble
Social Profile Scheduling Panel
Fetch social profile IDs from Agorapulse's profiles endpoint and store them in a Bubble option set. Build a compose form where social team members write content, select one or more profiles, set a schedule time, and submit — triggering the Agorapulse scheduling API to queue the post. A confirmation dialog prevents accidental sends.
On 'Schedule Post' button click: Show confirmation popup with 'You are about to schedule [Post Text input truncated] to [selected profiles count] profile(s) at [schedule time]. Confirm?' → On Confirm click: call Agorapulse API 'Create Scheduled Post' for each selected profile ID with post text and scheduled time → show success toast 'Scheduled to [count] profiles'.
Copy this prompt to try it in Bubble
Moderation Workflow with CRM Tagging
Combine Agorapulse inbox data with your Bubble CRM. When a community manager opens an inbox item, check if the sender's social handle exists in a Bubble Contact data type. If matched, show the contact's CRM history alongside the message. After replying, allow the manager to tag the conversation ('Lead', 'Support', 'Partnership') — store the tag in the Bubble database linked to the contact record.
On inbox item click: search Bubble Contact data type for records where social_handle = current inbox item's sender handle. If found: show Contact sidebar with name, company, last interaction date, and notes. Reply workflow: after calling Agorapulse 'Post Reply' API → create a Bubble 'Interaction' record with type=social_reply, contact=matched contact, message=reply text, timestamp=now.
Copy this prompt to try it in Bubble
Troubleshooting
Token exchange POST returns 401 or 403 even with correct client_id and client_secret
Cause: API access has not been confirmed or enabled for your Agorapulse account. Even with correct client credentials, accounts without confirmed API access are rejected. This can also occur if the grant_type parameter is missing or misspelled.
Solution: Contact your Agorapulse account manager to confirm API access is active on your account. Verify the POST body includes grant_type=client_credentials exactly (no typos, no extra spaces). Confirm that client_id and client_secret match the values provided by Agorapulse — re-request them if uncertain.
Inbox API call returns empty results even though there are messages in Agorapulse
Cause: The status filter may not match existing message states, or the inbox items may be in a different status than the filter applied. Also, rate limits from Agorapulse may be returning empty responses instead of error codes.
Solution: Test the inbox call with status=all or no status filter to see all items regardless of status. Verify that the Agorapulse inbox actually contains items for the connected social profiles. Check with Agorapulse support whether the API returns empty arrays or 429 codes when rate limited — adjust polling frequency accordingly.
'Backend Workflows' section is not visible in my Bubble editor
Cause: Backend Workflows are only available on Bubble's paid plans. The Free plan does not include this feature, making the client-credentials token exchange impossible to run server-side.
Solution: Upgrade to a paid Bubble plan to access Backend Workflows. The Agorapulse integration fundamentally requires Backend Workflows for two reasons: (1) the initial token exchange must run server-side to protect the client_secret, and (2) the scheduled token refresh must run as a recurring event. These cannot be replaced with front-end workflow alternatives.
API calls start failing mid-session with 401 errors
Cause: The access_token has expired. For Agorapulse client credentials tokens, the lifespan can be as short as 1 hour depending on account configuration. If the scheduled refresh workflow is not running or failed, the stored token expires and all API calls return 401.
Solution: Manually trigger the ExchangeAgorapulseToken Backend Workflow from your admin page to get a fresh token immediately. Then investigate why the scheduled refresh failed — check Bubble's Workflow logs for error details on the RefreshAgorapulseToken recurring event. Adjust the refresh interval to run more frequently than the token lifespan.
Initialize call fails with 'There was an issue setting up your call'
Cause: The Initialize call needs a real successful response to detect field structures. If the access_token passed during initialization is expired or invalid, the call returns 401 and Bubble cannot complete initialization. This is especially common when building the integration before a fresh token has been obtained.
Solution: Run the ExchangeAgorapulseToken Backend Workflow first to generate a fresh token. Then manually enter a fresh token value directly in the Initialize call field (temporarily, for initialization only). Once initialization completes successfully, change the workflow usage to the dynamic database-sourced value.
Best practices
- Always confirm Agorapulse API access with your account manager before starting any Bubble development. A 403 from an unconfigured account is indistinguishable from a real API error and wastes debugging time.
- Run the OAuth token exchange in a Backend Workflow, never in a front-end button click — the client_secret must stay server-side. This is both a security requirement and an Agorapulse integration prerequisite.
- Set Bubble privacy rules on the AgorapulseToken data type immediately after creating it. Access tokens in a readable database record are a serious security vulnerability — ensure they cannot be accessed through Bubble's Data API by non-admin users.
- Always add a confirmation dialog before executing reply actions. Social replies are public and irreversible — a double-confirmation step prevents accidental posts from slipping through during rushed moderation sessions.
- Ask Agorapulse for your specific rate limits before building high-frequency inbox polling workflows. Undocumented rate limits that return empty arrays instead of 429 errors can make debugging very difficult.
- Use a cursor or offset pattern in your inbox fetch workflow for accounts with large inboxes. Fetching all messages at once can be slow and WU-expensive — implement 'Load more' pagination from the beginning.
- Configure Bubble privacy rules on any Bubble data type that stores Agorapulse inbox message content (if you're saving messages for CRM tagging or audit trail). Social message content can be personal data subject to privacy regulations.
- WU awareness: avoid automatic polling patterns for the social inbox (e.g., fetching every 30 seconds). Use a user-triggered 'Refresh Inbox' button pattern instead to control WU consumption. Display a last-fetched timestamp so users know when data was last updated.
Alternatives
Hootsuite focuses on outbound publishing with team approval workflows — message scheduling, approvals, and analytics. Agorapulse focuses on inbound inbox management — replies, moderation, and community engagement. Both require enterprise plan API access. Choose Hootsuite for publishing operations; choose Agorapulse for community management and inbox moderation.
Buffer handles outbound post scheduling with a simple Bearer token — much easier to integrate and available on all Buffer plans. Buffer does not provide inbox or mention management. If your primary need is scheduling posts (not managing inbound messages), Buffer is significantly simpler to integrate in Bubble. Choose Agorapulse only when the unified inbox is the core use case.
Sprout Social provides both a unified inbox and deep analytics, while Agorapulse is primarily inbox-focused with lighter analytics. Sprout Social requires an Advanced plan for API access. If your Bubble app needs both robust analytics reporting and inbox management, Sprout Social's API covers more ground. If inbox moderation is the sole use case, Agorapulse's focused inbox API is the cleaner fit.
Frequently asked questions
Why can't I run the OAuth token exchange from a front-end button click in Bubble?
The Agorapulse OAuth client-credentials flow requires sending your client_secret to the token endpoint. The client_secret is an application-level credential — if it appears in a front-end workflow, it becomes visible in the browser's network tab to any user who opens browser developer tools. Backend Workflows in Bubble run on Bubble's servers with no browser involvement, keeping the client_secret entirely server-side. This is the correct security architecture for any OAuth client credentials integration.
What happens if the token refresh Backend Workflow fails?
If the refresh fails and the access_token expires, all Agorapulse API calls will return 401 errors. Your inbox will appear empty or show an error state. To recover: manually trigger the ExchangeAgorapulseToken Backend Workflow from your admin page to get a fresh token. Then investigate the recurring event logs in Bubble's Workflow Logs tab to understand why the refresh failed — common causes include Agorapulse API downtime, changes to client credentials, or Bubble's recurring event scheduler encountering an error.
How is the Agorapulse inbox different from Hootsuite's inbox?
Both tools provide a unified inbox for inbound social messages across platforms. Agorapulse is considered the more inbox-centric platform — its workflow is optimized specifically for community managers who spend most of their time responding to messages. Hootsuite's inbox is one feature among many (it also emphasizes publishing, analytics, and team approval workflows). For Bubble apps where inbox moderation is the core function, Agorapulse's more focused API for inbox management is the better fit.
Can I use this integration without a paid Bubble plan?
No. The Agorapulse integration requires Backend Workflows for two essential functions: (1) the initial OAuth client-credentials token exchange, which must run server-side to protect the client_secret, and (2) the scheduled token refresh that keeps the integration alive after the token expires. Both require Bubble's Backend Workflows feature, which is only available on paid plans. The free Bubble plan cannot support this integration in production.
How do I handle pagination for large Agorapulse inboxes?
Agorapulse's inbox API returns paginated results — check the meta object in the response for total count and current page. In Bubble, implement a 'Load more' button pattern: store fetched inbox items in a custom state list, and when 'Load more' is clicked, call the inbox API with page=current_page+1 and append the new results to the existing custom state list using the 'Add list' function. Avoid fetching all pages at once on initial load — this is slow and WU-expensive for large inboxes.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation