HomeBrowseUpload
← Back to registry
// Skill profile

Unbounce

name: unbounce

by byungkyu · published 2026-03-22

邮件处理开发工具加密货币
Total installs
0
Stars
★ 0
Last updated
2026-03
// Install command
$ claw add gh:byungkyu/byungkyu-unbounce
View on GitHub
// Full documentation

---

name: unbounce

description: |

Unbounce API integration with managed OAuth. Build and manage landing pages, track leads, and analyze conversion data.

Use this skill when users want to interact with Unbounce for landing page management and lead tracking.

For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).

compatibility: Requires network access and valid Maton API key

metadata:

author: maton

version: "1.0"

clawdbot:

emoji:

homepage: "https://maton.ai"

requires:

env:

- MATON_API_KEY

---

# Unbounce

Access Unbounce landing pages and leads via managed OAuth.

Quick Start

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/unbounce/accounts')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/unbounce/{native-api-path}

The gateway proxies requests to `api.unbounce.com` and automatically injects your credentials.

Authentication

All requests require the Maton API key:

Authorization: Bearer $MATON_API_KEY

**Environment Variable:** Set your API key as `MATON_API_KEY`:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

1. Sign in or create an account at [maton.ai](https://maton.ai)

2. Go to [maton.ai/settings](https://maton.ai/settings)

3. Copy your API key

Connection Management

Manage your Unbounce OAuth connections at `https://ctrl.maton.ai`.

List Connections

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=unbounce&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Connection

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'unbounce'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Get Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

**Response:**

{
  "connection": {
    "connection_id": "9c5cc43b-6f09-4789-ad4d-8162e39a24c1",
    "status": "PENDING",
    "creation_time": "2026-03-04T10:54:06.615371Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "unbounce",
    "method": "OAUTH2",
    "metadata": {}
  }
}

Open the returned `url` in a browser to complete OAuth authorization.

Delete Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

---

API Reference

Accounts

#### List Accounts

GET /unbounce/accounts

Query parameters:

  • `sort_order` - `asc` or `desc` (default: desc by creation date)
  • **Response:**

    {
      "metadata": {
        "count": 1,
        "location": "https://api.unbounce.com/accounts"
      },
      "accounts": [
        {
          "id": 4967935,
          "name": "My Account",
          "createdAt": "2026-03-04T10:54:34Z",
          "state": "active",
          "options": {}
        }
      ]
    }

    #### Get Account

    GET /unbounce/accounts/{account_id}

    **Response:**

    {
      "id": 4967935,
      "name": "My Account",
      "createdAt": "2026-03-04T10:54:34Z",
      "state": "active",
      "options": {}
    }

    #### List Account Pages

    GET /unbounce/accounts/{account_id}/pages

    #### List Account Sub-Accounts

    GET /unbounce/accounts/{account_id}/sub_accounts

    ---

    Sub-Accounts

    #### Get Sub-Account

    GET /unbounce/sub_accounts/{sub_account_id}

    **Response:**

    {
      "id": 5699747,
      "accountId": 4967935,
      "name": "ChrisKim",
      "createdAt": "2026-03-04T10:54:35Z",
      "website": null,
      "uuid": "cf72cbb6-17fd-44d1-bbe4-d25dcad6354a",
      "domainsCount": 0
    }

    #### List Sub-Account Pages

    GET /unbounce/sub_accounts/{sub_account_id}/pages

    #### List Sub-Account Domains

    GET /unbounce/sub_accounts/{sub_account_id}/domains

    #### List Sub-Account Page Groups

    GET /unbounce/sub_accounts/{sub_account_id}/page_groups

    ---

    Pages

    #### List All Pages

    GET /unbounce/pages

    Query parameters:

  • `role` - Filter by user role: `viewer` or `author`
  • `with_stats` - Include A/B test statistics when `true`
  • `limit` - Results per page (default: 50, max: 1000)
  • `offset` - Skip first N results
  • `sort_order` - `asc` or `desc`
  • `count` - When `true`, only return count in metadata
  • `from` - Start date (RFC 5322 format)
  • `to` - End date (RFC 5322 format)
  • **Response:**

    {
      "metadata": {
        "count": 1,
        "location": "https://api.unbounce.com/pages"
      },
      "pages": [
        {
          "id": "7cacd6d4-015a-4690-9537-68aac06bd98e",
          "subAccountId": 5699747,
          "name": "Training Template",
          "url": "http://unbouncepages.com/training-template/",
          "state": "unpublished",
          "domain": "unbouncepages.com",
          "createdAt": "2026-03-04T10:56:54Z",
          "lastPublishedAt": null,
          "variantsCount": 0,
          "integrationsCount": 0,
          "integrationsErrorsCount": 0
        }
      ]
    }

    #### Get Page

    GET /unbounce/pages/{page_id}

    Includes test statistics (A/B testing data):

    **Response:**

    {
      "id": "7cacd6d4-015a-4690-9537-68aac06bd98e",
      "name": "Training Template",
      "url": "http://unbouncepages.com/training-template/",
      "state": "unpublished",
      "tests": {
        "current": {
          "champion": "a",
          "hasResults": "false",
          "conversionRate": "0",
          "conversions": "0",
          "visitors": "0",
          "visits": "0"
        }
      }
    }

    #### List Page Form Fields

    GET /unbounce/pages/{page_id}/form_fields

    Query parameters:

  • `include_sub_pages` - Include sub-page form fields when `true`
  • `sort_order` - `asc` or `desc`
  • `count` - When `true`, only return count
  • **Response:**

    {
      "metadata": {
        "count": 3
      },
      "formFields": [
        {
          "id": "name",
          "name": "Name",
          "type": "text",
          "validations": {
            "required": false
          }
        },
        {
          "id": "email",
          "name": "Email",
          "type": "text",
          "validations": {
            "required": false,
            "email": true
          }
        },
        {
          "id": "telephone",
          "name": "Telephone",
          "type": "text",
          "validations": {
            "required": false,
            "phone": true
          }
        }
      ]
    }

    ---

    Leads

    #### List Page Leads

    GET /unbounce/pages/{page_id}/leads

    Query parameters:

  • `limit` - Results per page (default: 50, max: 1000)
  • `offset` - Skip first N results
  • `sort_order` - `asc` or `desc`
  • `from` - Start date (RFC 5322 format)
  • `to` - End date (RFC 5322 format)
  • **Response:**

    {
      "metadata": {
        "count": 0,
        "delete": {
          "href": "https://api.unbounce.com/pages/{page_id}/lead_deletion_request",
          "method": "POST"
        }
      },
      "leads": []
    }

    #### Get Lead

    GET /unbounce/pages/{page_id}/leads/{lead_id}

    or directly:

    GET /unbounce/leads/{lead_id}

    **Response:**

    {
      "id": "f79d7b6e-b3e8-484c-9584-d21c7afba238",
      "created_at": "2026-03-04T11:52:50.705Z",
      "page_id": "7cacd6d4-015a-4690-9537-68aac06bd98e",
      "variant_id": "a",
      "submitter_ip": "127.0.0.1",
      "form_data": {
        "name": "Test User",
        "email": "test@example.com",
        "telephone": "1234567890"
      },
      "extra_data": {
        "cookies": {}
      }
    }

    #### Create Lead

    POST /unbounce/pages/{page_id}/leads
    Content-Type: application/json

    **Request Body:**

    {
      "conversion": true,
      "visitor_id": "127.0.0.1234567890",
      "form_submission": {
        "variant_id": "a",
        "submitter_ip": "127.0.0.1",
        "form_data": {
          "name": "John Doe",
          "email": "john@example.com",
          "phone_number": "1234567890"
        }
      }
    }

    **Response:**

    {
      "id": "f79d7b6e-b3e8-484c-9584-d21c7afba238",
      "created_at": "2026-03-04T11:52:50.705Z",
      "page_id": "7cacd6d4-015a-4690-9537-68aac06bd98e",
      "variant_id": "a",
      "submitter_ip": "127.0.0.1",
      "form_data": {
        "name": "John Doe",
        "email": "john@example.com",
        "phone_number": "1234567890"
      }
    }

    Leads created via the API have `"created_by": "api"` in their `extra_data`.

    ---

    Domains

    #### Get Domain

    GET /unbounce/domains/{domain_id}

    #### List Domain Pages

    GET /unbounce/domains/{domain_id}/pages

    ---

    Page Groups

    #### List Page Group Pages

    GET /unbounce/page_groups/{page_group_id}/pages

    Query parameters:

  • `limit` - Results per page (default: 50, max: 1000)
  • `offset` - Skip first N results
  • `sort_order` - `asc` or `desc`
  • `from` / `to` - Date range filter
  • ---

    Users

    #### Get Current User

    GET /unbounce/users/self

    **Response:**

    {
      "id": 5031726,
      "email": "user@example.com",
      "firstName": "Chris",
      "lastName": "Kim",
      "metadata": {
        "related": {
          "subAccounts": ["https://api.unbounce.com/sub_accounts/5699747"],
          "accounts": ["https://api.unbounce.com/accounts/4967935"]
        }
      }
    }

    #### Get User by ID

    GET /unbounce/users/{user_id}

    ---

    Pagination

    Unbounce uses offset-based pagination:

    GET /unbounce/pages?limit=50&offset=0

    **Parameters:**

  • `limit` - Number of results per page (default: 50, max: 1000)
  • `offset` - Number of results to skip
  • `sort_order` - Sort direction: `asc` or `desc`
  • **Response metadata includes:**

    {
      "metadata": {
        "count": 100
      }
    }

    Code Examples

    JavaScript

    const response = await fetch('https://gateway.maton.ai/unbounce/pages', {
      headers: {
        'Authorization': `Bearer ${process.env.MATON_API_KEY}`
      }
    });
    const data = await response.json();
    console.log(data);

    Python

    import os
    import requests
    
    response = requests.get(
        'https://gateway.maton.ai/unbounce/pages',
        headers={
            'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'
        }
    )
    print(response.json())

    Notes

  • All responses include `metadata` with HATEOAS links for navigation
  • Date format: RFC 5322 (e.g., `2026-03-04T10:54:34Z`)
  • Page IDs are UUIDs, account/sub-account IDs are integers
  • Page states: `published` or `unpublished`
  • Account states: `active` or `suspended`
  • Error Handling

    | Status | Meaning |

    |--------|---------|

    | 200 | Success |

    | 401 | Invalid or missing authentication |

    | 404 | Resource not found |

    | 429 | Rate limited |

    Resources

  • [Unbounce API Documentation](https://developer.unbounce.com/api_reference/)
  • [Maton Community](https://discord.com/invite/dBfFAcefs2)
  • [Maton Support](mailto:support@maton.ai)
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band