● system status: available for new workflows

Project

Agent · messenger · in development

Messenger AI Chatbot — Activepieces Build

A second Messenger AI chatbot, rebuilt from scratch on Activepieces after shipping the first one on Make.com — same category of tool, different platform, deliberately chosen to build real fluency across builders as part of the progression toward multi-agentic AI systems. Wired for webhook verification, conversation memory, duplicate detection, Groq AI replies, and Messenger Send API delivery.

← back to projects
In Development — Meta App Review Pending
Type: AI Chatbot + Webhook Verification + Conversation Memory Tools: Activepieces · Groq AI · Meta Messenger API · Activepieces Tables Steps: 12 Platform: Facebook Messenger Status: Built · Not Yet Public
⚠ Built and functioning, not yet public. The full pipeline runs end-to-end — webhook verification, message parsing, conversation logging, AI reply generation, and reply delivery are all working — but the Meta app is still in Development mode, so the bot is only reachable by admins and testers on the connected Page until Meta App Review is completed.

// overview

After shipping the first Messenger AI agent on Make.com, this project rebuilds the same category of system — a Facebook Messenger chatbot with memory, AI-generated replies, and automatic logging — on Activepieces. The goal wasn't just to duplicate the result, it was to get hands-on with how a different automation platform handles the same problems: expression syntax, trigger sample data, step-level testing, and webhook verification all work differently here than they did in Make.com.

The flow catches every incoming Meta webhook event on a single trigger, then routes it two ways: verification handshakes get echoed straight back (required for Meta's initial webhook setup), while real user messages get parsed, checked against existing conversation records to avoid duplicate processing, sent to Groq AI for a reply, logged to Activepieces Tables with a live timestamp, and sent back to the user via the Messenger Send API.

// system diagram

TRIGGER 1. Catch Webhook ROUTER 2. Verification vs. real message Branch 1 Otherwise WEBHOOK 3. Return Response — echo hub.challenge PARSE 4. Code — extract sender, text, timestamp LOOKUP 5. Find Records — existing conversation? ROUTER 6. Duplicate — Skip vs. Otherwise Duplicate — Skip Otherwise End (skip processing) CONTEXT 7. Find Records — pull history AI 8. Send HTTP Request — Groq AI FORMAT 9. Code — extract reply text LOG 10. Create Record — save conversation LOG 11. Create Record — secondary write REPLY 12. Send HTTP Request — Messenger Send API End LEGEND Live and working Verification / dedup branch

// step breakdown

# Step Tool Status
1 Single trigger catches every incoming Meta webhook event — both the verification handshake and real user messages Activepieces Webhook ✓ Live
2 Router splits verification requests (GET with hub.mode=subscribe) from real messages (POST with message data) Activepieces Router ✓ Live
3 Verification branch echoes hub.challenge straight back — completes Meta's webhook setup handshake Activepieces Webhook ✓ Live
4 Message branch parses the raw payload — extracts senderId and messageText, flags whether the message is valid, and stamps an ISO timestamp Activepieces Code (JS) ✓ Live
5 Checks Activepieces Tables for an existing conversation record matching this sender, to catch duplicate webhook fires Activepieces Tables ✓ Live
6 Router splits already-processed duplicates (skipped) from genuinely new messages that continue to the AI reply logic Activepieces Router ✓ Live
7 Pulls existing conversation history for this sender, giving the AI reply full context rather than treating each message in isolation Activepieces Tables ✓ Live
8 Sends the message and conversation context to Groq AI to generate the reply HTTP · Groq AI ✓ Live
9 Extracts and formats the AI's reply text from the raw API response Activepieces Code (JS) ✓ Live
10 Writes senderId, the updated conversation history, and a live ISO timestamp to the conversations table Activepieces Tables ✓ Live
11 Secondary record write — table split still being finalized as the customer-record and conversation-log structures are separated Activepieces Tables ⚠ In progress
12 Posts the AI's reply back to the user via the Meta Messenger Send API, using the Page Access Token generated during app setup HTTP · Meta Messenger API ✓ Live

// current status

✓ Working End to End

  • Webhook verification handshake resolves correctly
  • Incoming messages parsed cleanly — sender, text, timestamp
  • Duplicate webhook fires detected and skipped
  • Conversation history pulled for context per sender
  • Groq AI generates the reply
  • Reply written back to the user via Messenger Send API
  • Live ISO timestamp on every logged conversation

⚠ Not Yet Public

  • Meta App Review not yet completed
  • Bot only reachable by admins/testers on the connected Page
  • Update-vs-Create logic for returning customers still pending
  • Two Create Record steps — table structure still being split cleanly
  • No public "message us" link until App Review clears

// why rebuild the same thing on a different platform

→ Platform fluency, not just a working bot

  • Make.com and Activepieces solve the same problem with genuinely different mental models
  • Activepieces expressions are step-ID based, not generic aliases — "trigger" isn't always valid
  • Trigger sample data has to be populated deliberately (via a built-in test-request form) before the picker can generate correct references
  • Step-level "Retest Step" debugging surfaced a stale-cache issue that looked like a code bug but wasn't
  • Same core architecture — webhook, parse, dedup, AI call, log, reply — proven portable across builders
  • Part of the planned progression: Make.com → GoHighLevel → Activepieces/n8n → multi-agentic systems

// build story

This build started with a working reference point already in hand — the Make.com Messenger agent — which made it a useful stress test for how much of that architecture (and how much debugging instinct) actually transfers to a new platform.

The starting point

Rebuild a proven architecture on Activepieces

Instead of designing a new bot from scratch, the same core pipeline from the Make.com build — webhook, memory, AI reply, logging — was rebuilt on Activepieces, on a separate Facebook Page used purely for testing.

Hit a wall

The hub.challenge verification wouldn't resolve

The Raw Body field kept returning an empty response even though the trigger data existed. It traced back to how Activepieces stores trigger sample data separately from live test runs — the picker had nothing real to reference until a test request was sent through the builder's own test-data form, not just the live URL.

Debugging instinct tested

A "bug" that turned out to be a stale cache

senderId briefly showed up with a stray space. Rather than assume the parsing code was wrong, the Code step was audited line by line, confirmed as a pure passthrough with no string manipulation — and the space was traced to a step panel that simply hadn't been retested since the sample data was cleaned up.

Wired properly

Real timestamps, not placeholders

lastUpdated started as a static "now" string. It was replaced with a real new Date().toISOString() generated directly inside the existing parsing step, then mapped into the table write through the picker — confirmed with a live ISO timestamp in the logged record.

Where it stands

Fully wired, gated by App Review

The full 12-step pipeline runs cleanly end to end — verification, parsing, dedup, AI reply, logging, and reply delivery. The only thing standing between this and a public bot is Meta App Review, since the connected app is still in Development mode.

// try it

⚠ Not public yet

This bot is fully built and functioning, but Meta App Review hasn't been completed, so it's currently only reachable by admins and testers on the connected Page. Once App Review clears, this section will be updated with a live link — the same way the Make.com Messenger agent's "try it" section works today.

// in the meantime, the step breakdown and build story above reflect the actual live build

// tools used

Activepieces Groq AI Meta Messenger API Meta for Developers Activepieces Tables Webhook Verification