> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rewards.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Triggers

> Connect your application to Rewards and credit points automatically.

Triggers let you connect your application to Rewards. Instead of managing points manually in the dashboard, your app fires events via the API and points are credited automatically. They live under the **Triggers** section of the dashboard.

<Note>
  Point **Triggers** (this page) fire a named event to award a fixed number of points. They are separate from **Automations**, a different dashboard section whose conditions queue wallets into a rolling draft reward.
</Note>

***

## Triggers

A trigger defines a named event and the number of points it awards.

| Field           | Description                                                                                     |
| --------------- | ----------------------------------------------------------------------------------------------- |
| **Event name**  | Human-readable label displayed in the dashboard (e.g. "Craft artifact")                         |
| **Trigger key** | The identifier used in API calls — lowercase, numbers, underscores only (e.g. `craft_artifact`) |
| **Points**      | Fixed number of points awarded each time the trigger fires                                      |
| **Active**      | Toggle to enable/disable the trigger without deleting it                                        |

***

## Creating a trigger

1. Dashboard → **Triggers** → **New trigger**
2. Fill in the event name, trigger key, and points amount
3. The trigger is active immediately

The trigger key is sanitized automatically: spaces become underscores, uppercase is lowercased, special characters are removed.

***

## Managing triggers

From the Triggers table you can:

* **Edit** — update the name, key, or points amount
* **Toggle** — pause a trigger temporarily (calls while inactive return `403`)
* **Delete** — permanently remove a trigger (existing point events are retained)

***

## Using triggers from your app

Once a trigger is configured, call the API from your backend to credit points:

```bash theme={null}
curl -X POST https://api.rewards.so/trigger \
  -H "Authorization: Bearer rw_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "triggerKey": "craft_artifact",
    "walletAddress": "0xabc123...",
    "pointSystemId": "your-point-system-uuid"
  }'
```

See the full [Triggers API reference](/api-reference/triggers) for rate limiting, error handling, and code examples.

***

## Best practices

<AccordionGroup>
  <Accordion title="Fire triggers server-side only">
    Your API key must never be exposed in client-side code (browser, mobile app). Always call the API from your backend or a server-side function.
  </Accordion>

  <Accordion title="Use specific trigger keys">
    One key per meaningful action (`purchase_completed`, `level_up`, `referral_accepted`) makes your activity feed readable and your analytics useful.
  </Accordion>

  <Accordion title="Use the inactive toggle for maintenance">
    If you need to pause point accumulation temporarily (e.g. during a season reset), toggle the trigger off rather than deleting it.
  </Accordion>

  <Accordion title="Watch for loops">
    If your app reacts to point events and fires more triggers, you can create an infinite loop. The API enforces a rate limit of 10 calls/min per (key + wallet + trigger) as a safety net, but design your event flow to avoid it.
  </Accordion>
</AccordionGroup>
