anyspot

n8n community node for Any Spot Chat Marketing: WhatsApp messaging, groups, contacts, campaigns, drip sequences, conversation bots, appointments and the AI voice agent, plus a real-time trigger.

Documentation

n8n-nodes-anyspot

Community node for n8n that connects your workflows to Any Spot Chat Marketing: WhatsApp messaging, the shared inbox, groups, contacts, fields and tags, scheduled messages, statuses, campaigns, drip sequences, conversation bots, appointment booking, the team and the Hebrew AI voice agent. Includes a real-time trigger and a generic Custom API Call for everything else.

The node talks to the API at https://wa.asg.co.il/api/v1 (reference: https://wa.asg.co.il/api-docs).

Install

Self-hosted n8n: Settings → Community Nodes → Install → n8n-nodes-anyspot. Or from the shell:

cd ~/.n8n/nodes
npm install n8n-nodes-anyspot

then restart n8n.

n8n Cloud only allows verified community nodes. Until this package is verified, Cloud users can call the same REST API with the HTTP Request node (docs: https://wa.asg.co.il/api-docs).

Credentials

  1. In the Any Spot dashboard open API Keys (https://wa.asg.co.il/api-keys) and create a key. Keys start with ghlk_ and are bound to one WhatsApp number.
  2. In n8n add credentials Any Spot API, paste the key, leave WhatsApp Number ID empty (it is resolved automatically).

Nodes

Any Spot Trigger

Starts a workflow in real time. Pick one or more events:

Event Fires when
Message Inbound a WhatsApp message arrives (contact or group)
Lead From Ad first message from a Facebook / Instagram click-to-WhatsApp ad
Message Sent / Delivered / Read / Failed outbound delivery status changes
Status Reply someone replies to your status
Contact Created / Updated a contact is created, or its name / tags change
Campaign Completed / Failed a bulk campaign finishes
Drip Step Executed a drip sequence sent one of its steps
Funnel Step Executed a funnel / automation step ran
WhatsApp Number Status Changed the connected number went online, offline or logged out
Voice Call Completed the AI voice agent finished a call and its analysis is ready
Any Event everything above

The node registers the webhook on activation and removes it on deactivation. Every delivery is verified with the HMAC signature the server sends (x-webhook-signature). Message events are flattened: event, timestamp, then the message fields (phone, name, text, messageId, isAdLead, adTitle...). Every other event arrives as event, timestamp and the payload fields of that event as documented in the API reference.

Any Spot

Resource Operations
Message Send Text · Send Media · Send Poll · Tag All Group Members · Get Many · React · Edit · Delete for Everyone · Forward
Conversation Get Many (inbox with filters) · Get (state + contact card + latest messages) · Update (status, tags, notes, pin, hide, pause AI) · Mark as Read · Assign (team member dropdown, or release)
Contact Create or Update · Get · Get Many · Delete · Check on WhatsApp · Update (details, lead status, tags add/remove, custom fields) · Get Activity · Opt Out / Opt In · Bulk Import (up to 500) · Bulk Tag (up to 500)
Field Get Many (user fields, general fields, tags, folders with ready tokens) · Create User Field (8 types) · Set General Field Value ({{bot.key}}) · Get Many Tags · Create Tag
Scheduled Message Create (text or media, ISO time) · Get Many · Update · Cancel
Group Create · Get · Get Many · Get Participants · Update Name · Update Description · Add / Remove Participants · Promote / Demote Admin · Get / Revoke Invite Link · Join via Invite · Preview Invite · Leave · Set Announcement Mode · Set Locked Info · Set Join Approval · Set Member Add Mode · List / Approve / Reject Join Requests · Import Members to Contacts · Get / Update Automation Settings (tracking, digest, welcome, moderation) · Refresh From WhatsApp · Send Daily Digest Now
Status Publish (text / image / video, audience, schedule) · Get Many
Campaign Create · Get Many · Pause · Resume · Get (status + progress) · Get Recipients · Delete
Drip Sequence Enroll Contact · Get Many · Get · Get Enrollments · Unenroll Contact
Conversation Bot Start · Get Many · Get · Enable · Disable
Appointment Book (Google Calendar event + WhatsApp reminders) · Get Available Slots · Get Many · Get · Cancel
AI Suggest Replies · Add Knowledge Source (text / URL / file)
Voice Agent Make Outbound Call · Get Call · Get Many Calls · Get Many Agents · Get Agent · Get Many Campaigns · Get Campaign · Create Campaign · Pause Campaign
Team Get Many · Get Performance
Account Get Key Info · Get Many Numbers · Get Usage & Quotas · Get Dashboard Stats
Webhook Create · Get Many · Delete
Custom Custom API Call: any method + path relative to the base URL, query, JSON body, extra headers; returns statusCode, headers, body. Use it for AI settings, knowledge list / delete, learned answers, notifications, team invites, group commands, digest settings, status rules, calendar settings, the audit log and anything else the reference documents.

Groups, drip sequences, bots, campaigns, voice agents, voice campaigns, team members and tags load as dropdowns. Phones are accepted in international format (972501234567) and converted to JIDs where needed; the new inbox, scheduling and forwarding operations also accept local numbers (0501234567), which the API completes with the country code of the connected number.

Upgrading from 1.0.0

1.1.0 is additive: every resource, operation and parameter of 1.0.0 keeps its name and meaning, so existing workflows run untouched. Only the base URL moved to https://wa.asg.co.il/api/v1 (the old Cloud Functions URL keeps working server side).

Limits

  • Immediate statuses support an allowlist audience only; scheduled statuses support every audience mode.
  • Rate limit: 120 requests per minute per API key.
  • Button / list messages are not exposed (WhatsApp Web no longer renders them reliably).

למפעיל: בנייה, בדיקה ופרסום

החבילה בנויה כ-community node סטנדרטי של n8n (TypeScript, n8n-workflow), עם שני nodes: Any Spot (פעולות) ו-Any Spot Trigger (טריגר webhook), וקרדנציאל אחד Any Spot API.

cd n8n-nodes-anyspot
npm install
npm run build     # tsc → dist/ + העתקת האייקון
npm run lint      # חוקי n8n-nodes-base (נדרש לאימות community node)
npm test          # smoke test אופליין: מבנה הצמתים + בקשות HTTP מדומות + חתימת webhook

בדיקה מקומית ב-n8n

npm run build && npm link
mkdir -p ~/.n8n/nodes && cd ~/.n8n/nodes && npm link n8n-nodes-anyspot
npx n8n start

הצמתים יופיעו בחיפוש כ-"Any Spot". צור קרדנציאל עם מפתח מ-/api-keys, הפעל workflow עם Any Spot Trigger ושלח הודעת וואטסאפ למספר.

פרסום ל-npm (כדי שלקוחות יתקינו בשם)

npm login
npm publish --access public

אחרי הפרסום כל לקוח עם n8n עצמאי מתקין דרך Settings → Community Nodes → n8n-nodes-anyspot.

אימות רשמי (n8n Cloud)

לקוחות על n8n Cloud רואים רק צמתים מאומתים. הגשה: https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/community-node-verification — דורש חבילה ב-npm, README באנגלית, npm run lint נקי, בלי תלויות runtime חיצוניות (החבילה עומדת בכל אלה). עד אז לקוחות Cloud משתמשים ב-HTTP Request מול ה-API.

מבנה

credentials/AnySpotApi.credentials.ts   מפתח + numberId אופציונלי, בדיקה מול /me
nodes/AnySpot/GenericFunctions.ts       קריאות HTTP, מיפוי שגיאות, פתרון numberId, דפדוף, loaders ל-dropdowns
nodes/AnySpot/resources/*.ts            פרמטרים + ביצוע לפי משאב (Account, Contact, Conversation, Custom, Field,
                                        Group, Marketing, Message, ScheduledMessage, Team, Voice)
nodes/AnySpot/AnySpot.node.ts           הצומת הראשי (resource / operation)
nodes/AnySpot/AnySpotTrigger.node.ts    רישום webhook, אימות HMAC, שיטוח האירוע
test/smoke-test.mjs                     בדיקות אופליין, כולל baseline של 1.0.0 שמגן מפני שינוי שובר

שדרוג גרסה (1.0.0 ← 1.1.0)

השינוי אדיטיבי בלבד: כל resource / operation / פרמטר מ-1.0.0 נשאר באותו שם, ה-version של הצומת נשאר 1, ורק כתובת הבסיס עברה ל-https://wa.asg.co.il/api/v1. לפרסום: npm run build && npm run lint && npm test, ואז npm publish --access public (דורש passkey). לקוחות קיימים מעדכנים דרך Settings → Community Nodes → Update.

Discussion