Appbricx
Docs
FeaturesPricingStart free

Get started

OverviewWhat Appbricx isQuickstart with a coding agentQuickstart with the builderCore concepts

Guides

Data and tablesAccess and rolesBusiness rulesSign-inCustom screensRealtime and topicsWorkflows, schedules and webhooksServer functionsAI in your appPaymentsFilesMessagesIntegrationsVerifyPublishing, domains and rollbackOperating your appExport and self-hostSelf-host install

Tutorials

Build a booking app with Claude CodeMulti-user todo listClient portalSlack on new sign-upTemplates

Reference

Reference homeFrontend SDKHTTP APIMCP toolsCLIIntegrations catalogContract formatAI key resolutionRun Appbricx locally

Loops

Create contacts and send events in Loops email platform.

MarketingAPI key6 actionsAll integrations

On this page
  1. Connect
  2. Call it from a workflow
  3. Actions (6)
  4. create_contact
  5. send_event
  6. custom_api_call
  7. delete_contact
  8. find_contact
  9. send_transactional_email
  10. Details

Connect

Auth type: API key (secret_text). Paste the API key (or token) from the provider's settings into the connect dialog. It is encrypted at rest and only decrypted on the server when an action runs.

  • In the editor: Backend panel, Integrations tab, then Connect. This connects it for the project.
  • For every project in a workspace: Workspace settings, Integrations.
  • Owners and admins choose which integrations members may connect in the admin panel (Integrations tab), and can attach their own OAuth app there.

Call it from a workflow

Pass the action name and its input. The call resolves with { success, output, error? }; a missing connection resolves with success false and the reason. See ctx.integrations.invoke and ctx.integrations.call.

Native workflow
// .workflow.js (native ctx)
export async function run(ctx) {
  const res = await ctx.integrations.invoke("loops", "create_contact", {
    "email": "<email>"
  });
  if (!res.success) throw new Error(res.error);
  ctx.log.info("Loops answered", { output: res.output });
}
defineWorkflow module
// defineWorkflow module (@app/sdk ctx)
import { defineWorkflow } from "@app/sdk";

export default defineWorkflow({
  id: "loops-create-contact",
  name: "Loops: Create Contact",
  description: "Calls Loops when a row is created.",
  trigger: { type: "entity_event", entity: "tickets", event: "created" },
  async run(ctx, event) {
    const res = await ctx.integrations.call("loops", {
      "action": "create_contact",
      "email": "<email>"
    }) as { success: boolean; error?: string };
    if (!res.success) throw new Error(res.error);
  },
});
From an app (connector proxy)
curl -X POST "$APP_ORIGIN/__appbricx/connector-proxy/loops/create_contact" \
  -H "Authorization: Bearer $APP_KEY" \
  -H "content-type: application/json" \
  -d '{"props":{"email":"<email>"}}'

Actions

create_contactin catalog

Create Contact. Creates a new contact in Loops. Returns an error if a contact with the given email already exists.

InputTypeDescription
emailrequiredtextThe email address of the contact.
firstNameoptionaltextThe contact's first name.
lastNameoptionaltextThe contact's last name.
userIdoptionaltextYour internal user ID for this contact.
subscribedoptionalone of "no_change" | "true" | "false"Set subscription status. Leave as "No Change" to preserve existing status on update.
userGroupoptionaltextA group/segment to assign to this contact.
sourceoptionaltextWhere this contact came from (e.g. "signup-form", "import").
mailingListsoptionalobjectSubscribe or unsubscribe this contact from mailing lists. Provide list IDs as keys with `true` (subscribe) or `false` (unsubscribe) as values.
customPropertiesoptionalobjectAdditional custom contact properties as key-value pairs. Reserved fields (email, firstName, lastName, userId, subscribed, userGroup, source) are ignored here.

send_eventin catalog

Send Event. Sends an event to Loops for a contact. Events can trigger email automations configured in your Loops dashboard.

InputTypeDescription
emailoptionaltextThe email address of the contact to send the event for.
userIdoptionaltextYour internal user ID of the contact (used if email is not provided).
eventNamerequiredtextThe name of the event to send (e.g. "signup", "purchase", "password-reset"). Must match an event set up in Loops.
eventPropertiesoptionalobjectOptional key-value pairs to attach to the event (used in email templates).
mailingListsoptionalobjectSubscribe or unsubscribe this contact from mailing lists. Provide list IDs as keys with `true` (subscribe) or `false` (unsubscribe) as values.
contactPropertiesoptionalobjectOptional contact property updates to apply when the event is sent.

custom_api_call

Custom API Call. Make a custom API call to a specific endpoint

InputTypeDescription
urlrequiredobject (depends on other props)url
methodrequiredone of "GET" | "POST" | "PATCH" | "PUT" | "DELETE" | "HEAD"Method
headersrequiredobjectAuthorization headers are injected automatically from your connection.
queryParamsrequiredobjectQuery Parameters
body_typeoptionalone of "none" | "json" | "form_data" | "raw"Body Type
bodyoptionalobject (depends on other props)Body
response_is_binaryoptionalbooleanEnable for files like PDFs, images, etc.
failsafeoptionalbooleanNo Error on Failure
timeoutoptionalnumberTimeout (in seconds)
followRedirectsoptionalbooleanFollow redirects

delete_contact

Delete Contact. Permanently deletes a contact from Loops by their email address or user ID.

InputTypeDescription
emailoptionaltextThe email address of the contact to delete.
userIdoptionaltextYour internal user ID of the contact to delete.

find_contact

Find Contact. Finds a contact in Loops by their email address or user ID.

InputTypeDescription
searchByrequiredone of "email" | "userId"The field to search by. The Loops API only allows one search parameter.
searchValuerequiredtextThe email address or user ID to search for.

send_transactional_email

Send Transactional Email. Sends a transactional email to a contact using a pre-built template in Loops.

InputTypeDescription
emailrequiredtextThe recipient's email address.
transactionalIdrequiredtextThe ID of the transactional email template in Loops (find it in your Loops dashboard).
addToAudienceoptionalbooleanIf true, the recipient will be added to your Loops audience if they are not already a contact.
dataVariablesoptionalobjectKey-value pairs to populate dynamic variables in your email template (e.g. { "name": "Alice", "resetUrl": "https://..." }).

Details

Id
loops
Category
Marketing
Tags
email, transactional, product-email, saas
Package
@activepieces/piece-loops@0.0.1
Tier
Community

On this page

  1. Connect
  2. Call it from a workflow
  3. Actions (6)
  4. create_contact
  5. send_event
  6. custom_api_call
  7. delete_contact
  8. find_contact
  9. send_transactional_email
  10. Details
Appbricx

The backend, runtime and hosting for apps your coding agent builds. On our cloud, in yours, or on your own servers.

Features

Coding agents and MCPVerify testingBuilder consolePostgres databaseData APIRealtimeRow-level securitySign-in and authPaymentsWorkflows and jobsAI in your appIntegrationsBackups and rollbackHosting and domainsSelf-host and exportAll features

Product

ShowcasePricingFor coding agentsTemplatesPrivate cloudBring your own AI keyFAQ

Compare

Appbricx vs SupabaseLovable alternativeBolt alternativeFor freelancersFor agencies

Resources

DocumentationReferenceBlogSupportContact

© 2026 Appbricx. All rights reserved.

TermsPrivacyCookiesAcceptable Use