# Install Repeatly Rewards: a guide for AI agents

Repeatly Rewards is a loyalty app for Shopify stores. Customers earn points, climb tiers, redeem rewards and earn badges. They can keep a pass on their phone and get reminders by email, wallet push or SMS.

This guide says which steps a person must do and which steps an agent can do through the Integration API.

## Plans

- Free: free, unlimited members.
- Growth: $29 per month, 14-day free trial, up to 5,000 members.
- Pro: $99 per month, 14-day free trial, unlimited members.

Prices and trial lengths on this page come from the same configuration the billing code uses.

## Step 1. Install the app (the merchant does this)

The Shopify App Store listing is coming soon. There is no install link yet.

The merchant must click install in Shopify. No API can install a third-party app for a store. The free plan starts at once. Paid plans start with a free trial.

## Step 2. Create an API key (the merchant does this)

API access is on the Pro plan. The merchant opens the admin page `/admin/integrations/api-keys`, creates a key of type "Full Access" and gives it to the agent. A "Read Only" key can only read. The full key is shown once. Treat it as a secret.

Every request below sends the key as a bearer token. The base URL is the origin of the Repeatly admin app.

```sh
BASE=https://repeatly-rewards.onrender.com
KEY=<the API key>
```

Requests with a body use `Content-Type: application/json`. Calls made with a key reject unknown top-level fields with HTTP 400 and a hint. A missing or invalid key returns 401. A shop without Pro gets 403.

## Step 3. Create the earning programs

`POST /api/programs` needs `name`, `type` and `pointsValue`. Common types: `purchase`, `signup_bonus`, `birthday`, `referral`, `review`. `pointsType` is `per_dollar` (default) or `fixed`. The Free plan allows 1 program.

```sh
curl -sS -X POST "$BASE/api/programs" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"name":"Purchase points","type":"purchase","pointsType":"per_dollar","pointsValue":1,"enabled":true}'
```

`GET /api/programs` lists the programs.

## Step 4. Create the tiers

Tiers are on the Growth plan. `POST /api/tiers` needs `name`. Optional: `pointsRequired`, `multiplier`, `color`, `entryGiftPoints`.

```sh
curl -sS -X POST "$BASE/api/tiers" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"name":"Gold","pointsRequired":1000,"multiplier":1.5}'
```

## Step 5. Create the rewards

`POST /api/rewards` needs `name`. `discountType` is `fixed_amount` (default), `percentage` or `free_shipping`. `pointsCost` must be above zero. The Free plan allows 2 rewards.

```sh
curl -sS -X POST "$BASE/api/rewards" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"name":"10 percent off","pointsCost":1000,"discountType":"percentage","discountValue":10,"couponExpiryDays":30,"singleUse":true}'
```

## Step 6. Turn on the storefront widget (the merchant does this)

The widget is a theme app extension. No endpoint turns it on. The merchant opens the Shopify theme editor, App embeds, and enables the Repeatly rewards block. Without it, no rewards panel shows on the storefront. `GET /api/widget/config?shop=<store>.myshopify.com` is public and returns what the widget will show.

## Step 7. Wallet pass

Wallet passes are on the Pro plan. Each provider is set up on its own, and the merchant brings the credentials.

- Google Wallet: needs a free Google Pay & Wallet Console account. With a Full Access key an agent can send them with `PUT /api/wallet/config/google`, body `{"issuerId":"...","serviceAccountJson":"..."}`. `GET /api/wallet/config/google` returns the masked state.
- Apple Wallet: needs an Apple Developer Program membership. The app has a five-page setup wizard in Integrations, then Wallet. The merchant does this one.

After setup the merchant turns the provider on in Integrations, then Wallet. No key-based endpoint issues a pass for a customer. The customer adds the pass from the storefront rewards panel, which asks for a customer session. Lock-screen notifications are verified on Google Wallet. Apple Wallet notifications are not yet verified on a device.

## Step 8. Verify

Create a test customer, add points, and read the customer back. Use an address you own.

```sh
curl -sS -X POST "$BASE/api/customers" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"name":"Setup check","email":"setup-check@example.com"}'

curl -sS -X POST "$BASE/api/points/adjust" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"email":"setup-check@example.com","points":10,"reason":"Setup check"}'

curl -sS "$BASE/api/customers?page=1&limit=10" -H "Authorization: Bearer $KEY"
```

The balance must read 10. Reverse it with `"points":-10`. Then read back `GET /api/programs`, `GET /api/tiers` and `GET /api/rewards` and compare them with what you created.

## Other ways in

- MCP server: `POST /api/mcp` with the same key, Pro plan. It reads programs, customers, analytics and recent activity. A Full Access key can also adjust points. It cannot create programs, tiers or rewards.
- Lens: the assistant inside the app. A person pastes a request, for example "Set up 1 point per dollar, a birthday gift and three tiers". Lens proposes each change and the person clicks Apply.

## Links

- Home page: /landing
- Privacy: /privacy
- Site map: /sitemap.xml
- Support: support@repeatly.club
