Skip to content

Marketing Automation · Beta

Perkville
API integration

Ship Marketing Automation features without building the integration. Full Perkville API access via Proxy and 80+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Perkville

Use Cases

Why integrate with Perkville

Common scenarios for SaaS companies building Perkville integrations for their customers.

01

Embed loyalty into fitness and wellness booking software

Studio scheduling and membership platforms can offer their gym, yoga, and spa customers a fully managed points, tiers, and referral engine without building one in-house. Class check-ins and package purchases automatically translate into loyalty rewards inside your product.

02

Add loyalty-aware checkout to a POS or payments product

Retail and service POS platforms can surface available vouchers at the register and mark them redeemed the moment a discount is applied. This lets your merchants run sophisticated loyalty programs directly from the checkout flow you already own.

03

Power referral-driven growth inside a vertical CRM

CRMs for gyms, salons, and wellness brands can pull referral activity into their pipeline and automate follow-up on referred prospects. Your users get closed-loop attribution from referral send through paying member without leaving your CRM.

04

Ship a native member rewards experience in white-label mobile apps

App builders can render a member's tier badge, point balance, active challenges, and earning opportunities inside their own branded app. This turns a plain member portal into a gamified retention surface backed by Perkville data.

05

Sync membership rosters between your platform and Perkville

Any SaaS that owns the customer record — CRMs, membership managers, gym management systems — can keep Perkville's member directory continuously aligned with theirs. Members, locations, and identifiers stay consistent so loyalty actions always attribute correctly.

What You Can Build

Ship these features with Truto + Perkville

Concrete product features your team can ship faster by leveraging Truto’s Perkville integration instead of building from scratch.

01

Bulk member roster sync

Upsert up to 50 external members per call from your CRM into Perkville, mapping your internal customer IDs to Perkville accounts for reliable attribution.

02

Real-time point awarding from transactions and check-ins

Push single or bulk transactions (up to 200 at a time) when customers buy, visit, or complete an action, using trans_source_id for idempotent, retry-safe writes.

03

Refund-aware point reversals

Automatically create void transactions when your platform processes a refund or cancels a booking, so point balances stay in sync with real revenue.

04

In-app tier and challenge widgets

Use the levels, challenges, and earning views to render a member's current tier, progress bar, badge URL, and active gamification challenges natively in your UI.

05

Voucher redemption at checkout

List a customer's available vouchers at the register, apply the chosen discount in your cart, and update the voucher status to redeemed to close the loop.

06

Referral capture and lead routing

Pull new referrals from Perkville into your CRM or marketing automation to enroll referred prospects in nurture campaigns and track conversion back to the referring member.

SuperAI

Perkville AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_perkville_agreement_versions

List Perkville agreement versions for a business or agreement. Returns: agreement_version_id, agreement_id, agreement_internal_name, agreement_type, apply_to_join_flow, business, version, text, is_active, created_dt, last_mod_dt, resource_uri. At least one of the agreement or business filter is required; business__in queries are not supported.

get_single_perkville_agreement_version_by_id

Get a single Perkville agreement version by id. Returns: agreement_version_id, agreement_id, agreement_internal_name, agreement_type, apply_to_join_flow, business, version, text, is_active, created_dt, last_mod_dt, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_businesses

List Perkville businesses, each representing a single rewards program for a real-world business. Returns: business_id, categories, fine_print, homepage_url, locations, name, logo_url, brand_color, brand_secondary_color, promotions, perks, perkville_url, resource_uri, rewards_program_name, app_connection_message, loyalty_launch_dt, prelaunch_info_message, allow_referrals_before_start_dt,…

get_single_perkville_business_by_id

Get a single Perkville business by id. Returns the full business object including business_id, name, rewards_program_name, categories, locations, promotions, perks, homepage_url, resource_uri, fine_print, brand_color, brand_secondary_color, logo_url, perkville_url, app_connection_message, loyalty_launch_dt, prelaunch_info_message, allow_referrals_before_start_dt,…

list_all_perkville_staff

List business staff members in Perkville. Results are filtered to only return staff at businesses where the token owner is also a staff member. Returns: staff_id, business, created, bill_payer, resource_uri, staff_role, staff_description, user. Filterable by business, bill_payer, staff_role, and user.

get_single_perkville_staff_by_id

Get a single business staff member in Perkville by id. Returns: staff_id, business, created, bill_payer, resource_uri, staff_role, staff_description, user, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_challenges

List Perkville challenges, filterable by challenge_id, business, name, or slug. Returns: challenge_id, business, name, slug, description, fine_print, join_message, ineligible_message, success_message, incomplete_message, locations, home_locations, start_date, end_date, use_membership_start_date, membership_join_start_date, membership_join_end_date, require_active_membership, resource_uri,…

get_single_perkville_challenge_by_id

Get a single Perkville challenge by id. Returns: challenge_id, business, name, slug, description, fine_print, join_message, ineligible_message, success_message, incomplete_message, locations, home_locations, start_date, end_date, use_membership_start_date, membership_join_start_date, membership_join_end_date, require_active_membership, resource_uri, valid_customer_attributes, address_1,…

list_all_perkville_challenge_connections

List challenge connections in Perkville. A challenge connection represents the relationship between a user and a challenge (rewards program) at a business. At least one of the business, user, email, connection or challenge filters is required. Returns: business, challenge, completed, completed_dt, connection, created_dt, end_date, join_dt, join_status, last_mod_dt, start_date, resource_uri and location details.

get_single_perkville_challenge_connection_by_id

Get a specific challenge connection in Perkville by id. A challenge connection represents the relationship between a user and a challenge (rewards program) at a business. Returns: business, challenge, completed, completed_dt, connection, created_dt, end_date, join_dt, join_status, last_mod_dt, resource_uri, start_date, address_1, address_2, city, country_code, external_location_id, latitude,…

list_all_perkville_challenge_connection_requirement_summaries

List Challenge Connection Requirement Summaries in Perkville, tracking each Challenge Connection's progress toward a Challenge Perk Requirement. Returns: challenge, challenge_connection, challenge_perk_requirement, earned_quantity, completed_requirement, completed_dt, created_dt, last_mod_dt, resource_uri.

get_challenge_connection_requirement_summary_by_id

Get a Perkville challenge connection requirement summary by id. The summary represents the relationship between a Challenge Connection and a Challenge Perk Requirement. Returns: challenge, challenge_connection, challenge_perk_requirement, completed_dt, completed_requirement, created_dt, earned_quantity, last_mod_dt, resource_uri, address_1, address_2, business, city, country_code,…

list_all_perkville_challenge_requirements

List Challenge Perk Requirements in Perkville, which define how many times a user must earn a Perk to complete a requirement for a single Challenge. Returns: challenge_perk_requirement_id, challenge, business, title, description, required_quantity, progress_perk, display_order, detail_link, resource_uri.

get_single_perkville_challenge_requirement_by_id

Get a challenge perk requirement by id in Perkville. A challenge perk requirement is a rule defining how many times a user must earn a perk before completing a requirement for a single challenge. Returns the requirement object including challenge_perk_requirement_id, title, description, required_quantity, progress_perk, challenge, business, and resource_uri. Required: id.

list_all_perkville_connections

List connections in Perkville. A connection joins a user to a business's rewards program and tracks their point balance, lifetime earned points, membership status and vouchers. At least one of the business or user filters is required; also supports filtering by email, external membership status and last-modified date range, with limit/offset pagination. Returns Connection objects.

get_single_perkville_connection_by_id

Get a single Perkville connection by id. A connection joins a user to a business's rewards program. Returns: connection_id, business, user, status, point_balance, lifetime_earned_points, external_member_id, external_membership_status, external_membership_type, external_join_dt, external_cancel_dt, rewards_program_join_dt, home_location, last_visited_location, last_transaction_dt, last_mod_dt, level, referral_offer_url, vouchers, resource_uri.

create_a_perkville_connection

Create a connection in Perkville to join a user to a business's loyalty program. Returns the created connection including business, user, status, point_balance, lifetime_earned_points, and resource_uri. Required: business and exactly one of user or user_email.

update_a_perkville_connection_by_id

Update a Perkville connection by id. With user-level access only the status field can be changed (to ACTIVE or INACTIVE). With admin access the external membership fields (external_join_dt, external_cancel_dt, external_membership_status, external_membership_type, external_home_location_id, home_location) can also be updated. Returns the updated Connection object.

list_all_perkville_connection_attributes

List connection attributes in Perkville, which record custom attribute values assigned to a business's customer connections. Returns: added_dt, connection, custom_attribute_value, resource_uri. At least one filter (connection or custom_attribute_value) is required when no id is specified.

get_single_perkville_connection_attribute_by_id

Get a single connection attribute by id in Perkville. Returns: added_dt, connection, custom_attribute_value, resource_uri, address_1, address_2, business, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_connection_balances

List connection balances in Perkville for recently updated point balances of connections at a business. Returns: business, connection, last_biz_perk_title, last_mod_dt, last_transaction_dt, lifetime_earned_points, lifetime_spent_points, point_balance, resource_uri, user. At least one of business, user, email, or connection filter is required for list requests without a connection_balance_id;…

get_single_perkville_connection_balance_by_id

Get a single Perkville connection balance by id. Returns the point balance of a connection, including lifetime earned and spent points, business and connection references, last transaction date, and user. Returns: business, connection, last_biz_perk_title, last_mod_dt, last_transaction_dt, lifetime_earned_points, lifetime_spent_points, point_balance, resource_uri, user, address_1, address_2,…

list_all_perkville_connection_level_progress

List Perkville connection level progress records for a business, ordered by most recent last_mod_dt descending. Returns each connection's current level progress snapshot including business, connection, user, current_level_info, next_level_info, and requalification_info. Required: business.

list_all_perkville_custom_attributes

List custom attributes created by businesses in Perkville. Returns: business, display_name, display_action, description, resource_uri, slug.

get_single_perkville_custom_attribute_by_id

Get a single custom attribute in Perkville by id. Returns: business, description, display_action, display_name, resource_uri, slug, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_custom_attribute_values

List custom attribute values in Perkville. Without a filter, returns values for all custom attributes at all businesses authorized for the bearer token user; use the custom_attribute filter to narrow results to a specific attribute. Returns: custom_attribute, display_name, order, resource_uri.

get_single_perkville_custom_attribute_value_by_id

Get a single custom attribute value by id in Perkville. Returns: custom_attribute, display_name, order, resource_uri, address_1, address_2, business, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_email_tracking

List emails sent from Perkville businesses associated with the API token. Returns: business_id, location_id, resource_uri, sent_dt, type, user_email, user_id. Supports filtering on business_id, sent_dt, type, user_email, and user_id.

get_single_perkville_email_tracking_by_id

Get a single email tracking record by id. Returns: business_id, location_id, resource_uri, sent_dt, type, user_email, user_id, address_1, address_2, business, city, country_code, external_location_id, latitude, longitude, name, postal_code, state. Required: id.

list_all_perkville_external_locations

List External Locations in Perkville that associate a Perkville Location with an ID in another system. The combination of external_system_id and external_location_id is unique system-wide. Returns: id, external_system_id, external_location_id, location.

get_single_perkville_external_location_by_id

Get a single External Location in Perkville by id. Returns: id, external_system_id, external_location_id, location, address_1, address_2, business, city, country_code, latitude, location_id, longitude, name, postal_code, resource_uri, state. Required: id.

list_all_perkville_external_members

List external members at a business in Perkville. Returns: business, connection, user, resource_uri, external_system_id, external_member_id, external_membership_type, external_membership_status, home_location, external_cancel_dt, external_join_dt, user_id, resource_id, connection_id, home_location_id. Required: at least one of business or user. The external_member_id filter also requires…

get_single_perkville_external_member_by_id

Get a Perkville external member by id. Returns the full membership record including business, connection, user, external_member_id, external_system_id, external_membership_status, external_membership_type, external_join_dt, external_cancel_dt, home_location, resource_uri, created_dt, and last_mod_dt. Required: id.

perkville_external_members_bulk_create

Batch create or update external members in Perkville, upserting by external_member_id and external_system_id. Returns: business, external_members, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, resource_uri, state. Required: business, external_members. Max 50 members per request.

list_all_perkville_frequency_bonus_perks

List Frequency Bonus Perks in Perkville. A frequency bonus perk is awarded when users earn qualifying perks a certain number of times within a defined period. Returns: frequency_bonus_perk_id, business, frequency, required_to_earn, qualifying_perks, reward, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state.

get_single_perkville_frequency_bonus_perk_by_id

Get a Perkville frequency bonus perk by id. A frequency bonus perk is awarded when a user earns a qualifying perk a certain number of times within a given period. Returns: frequency_bonus_perk_id, business, frequency, required_to_earn, qualifying_perks, reward, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state.…

list_all_perkville_frequency_bonus_progress

List Perkville frequency bonus progress records showing each user's progress towards frequency bonus perks. Returns: frequency_bonus_progress_id, business, user, frequency_bonus_perk, progress_count, has_earned_bonus, resource_uri. Records appear only when a user has earned at least once in the current time period; users with no activity in the period return no records. Filterable by…

get_single_perkville_frequency_bonus_progress_by_id

Get a single Perkville frequency bonus progress record by id. Returns: frequency_bonus_progress_id, business, user, frequency_bonus_perk, progress_count, has_earned_bonus, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_levels

List loyalty program levels for a business in Perkville. Returns: level_id, business, name, point_floor, badge_url, resource_uri. Required: business.

get_single_perkville_level_by_id

Get a single Perkville level by id. Returns: level_id, business, name, point_floor, badge_url, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, postal_code, state. Required: id.

list_all_perkville_locations

List physical business locations in Perkville. Returns: location_id, name, business, address_1, address_2, city, state, postal_code, country_code, latitude, longitude, external_location_id, resource_uri.

get_single_perkville_location_by_id

Get a single Perkville location by id. Returns: location_id, name, address_1, address_2, city, state, postal_code, country_code, latitude, longitude, business, external_location_id, resource_uri. Required: id.

list_all_perkville_perks

List perks (reward rules) for a business in Perkville. Perks are organized into earning or redemption classifications. Returns: perk_id, business, category, classification, title, description, points, type, fine_print, redemption_instructions, expiration_days, eligible_at_all_locations, eligible_locations, external_coupon_code, initial_voucher_status, instant_rewards,…

get_single_perkville_perk_by_id

Get a single Perk in Perkville by id. A Perk is a rewards rule for a business — either an earning rule or a redemption rule. Returns: perk_id, business, category, classification, title, description, points, type, fine_print, redemption_instructions, expiration_days, eligible_at_all_locations, eligible_locations, external_coupon_code, initial_voucher_status, instant_rewards,…

create_a_perkville_perk

Create a perk (reward rule) for a business in Perkville. Perks are classified as EARN (points awarded to a customer for an action) or REDEEM (points spent by a customer for a reward), and can carry fine print, redemption instructions, voucher expiration and location eligibility. Returns the created Perk object. Required: business, classification, title, points.

update_a_perkville_perk_by_id

Update an existing Perkville perk by id. Returns the updated perk object including perk_id, title, points, type, classification, description, eligible_locations, fine_print, and resource_uri. Required: id.

list_all_perkville_perk_categories

List Perkville perk categories for a business. A perk category groups perks for display purposes. Returns: category_id, category_name, business, type, display_order, perks, resource_uri, created_dt, last_mod_dt. Required: business.

get_single_perkville_perk_category_by_id

Get a single Perkville perk category by id. Returns: category_id, category_name, business, type, display_order, perks, resource_uri, created_dt, last_mod_dt, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_promotions

List promotions (special perks such as Referral Promotions) for a Perkville business. Returns: business, detail, eligible_at_all_locations, eligible_locations, fine_print, perk, picture_uri, picture_url, title, type. Required: business.

get_single_perkville_promotion_by_id

Get a single Perkville promotion by id. A Promotion is a special perk created by a business, currently including Referral Promotions. Returns: business, detail, eligible_at_all_locations, eligible_locations, fine_print, perk, picture_uri, picture_url, title, type, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, resource_uri,…

list_all_perkville_recurring_bonus_perks

List Recurring Bonus Perks in Perkville. A Recurring Bonus Perk is awarded when a user earns a qualifying perk a certain number of times, after which progress carries forward for the next earn. Returns: recurring_bonus_perk_id, business, qualifying_perk, points, instant_rewards, required_to_earn, start_date, resource_uri and location details.

get_single_perkville_recurring_bonus_perk_by_id

Get a single Recurring Bonus Perk in Perkville by id. A Recurring Bonus Perk is awarded when a user earns a qualifying perk a certain number of times, after which progress carries forward for the next earn. Returns: recurring_bonus_perk_id, business, qualifying_perk, points, instant_rewards, required_to_earn, start_date, resource_uri, address_1, address_2, city, country_code,…

list_all_perkville_recurring_bonus_progress

List recurring bonus progress records in Perkville showing each user's progress towards a recurring bonus perk. Returns: recurring_bonus_progress_id, business, user, recurring_bonus_perk, progress_count, times_earned, cycle_start_date, resource_uri. Records are excluded for staff members not authorized for all locations at a business.

get_single_perkville_recurring_bonus_progress_by_id

Get a single recurring bonus progress record by id in Perkville. Returns: recurring_bonus_progress_id, business, user, recurring_bonus_perk, progress_count, times_earned, cycle_start_date, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_referrals

List Perkville referrals between users at a business. Returns the referral record including business, referral_status, referral_source, referrer_conn_status, referral_from_user, referral_to_user, created_dt, completed_dt, voucher, voucher_id, and resource_uri. Filterable by business, referral_status, created_dt, completed_dt, location, referral_from_user, referral_to_user.

get_single_perkville_referral_by_id

Get a single Perkville referral by id. Returns: business, completed_dt, created_dt, distribution_type, location, referral_content, referral_date, referral_from_user, referral_source, referral_status, referral_to_email, referral_to_user, referree_external_id, referree_external_id_type, referrer_conn_status, resource_uri, voucher, voucher_id, address_1, address_2, city, country_code,…

create_a_perkville_referral

Create a Perkville referral between two users at a specified business. Returns the created referral including business, referral_from_user, referral_to_email, referral_status, referral_source, created_dt, distribution_type, resource_uri. Required: business, referral_from_user, referral_to_email.

list_all_perkville_scopes

List all Perkville OAuth scopes granted to the bearer token making the request. Returns: scope.

list_all_perkville_transactions

List Perkville transactions, optionally filtered by user, business, date range, or perk classification. Returns: transaction_id, classification, title, trans_source_id, perk_id, business_id, business, transaction_status, trans_status, points, transaction_dt, last_mod_dt, user_id, transaction_reference, location_id, locations_id, quantity.

get_single_perkville_transaction_by_id

Get a single Perkville transaction by id. Returns: transaction_id, classification, title, trans_source_id, perk_id, business_id, business, transaction_status, trans_status, points, transaction_dt, last_mod_dt, user_id, transaction_reference, location_id, locations_id, quantity, address_1, address_2, city, country_code, external_location_id, latitude, longitude, name, postal_code, resource_uri,…

create_a_perkville_transaction

Create or award points transactions in Perkville. Returns the created transaction including transaction_id, classification, title, points, transaction_dt, last_mod_dt, user_id, business_id, perk_id, and quantity. Required: business and exactly one of user or user_email.

perkville_transactions_bulk_create

Batch create up to 200 transactions for a given Perkville business in a single request. Returns a list of result objects in the same order as the input — successful entries include the created transaction's business, transaction_dt, transaction_id, transaction_reference, and transaction_status; failed entries include an errors object. Required: business, transactions. Limit of 200 transactions…

list_all_perkville_void_transactions

List voided transaction records in Perkville. A void creates a new transaction with the negative amount of the original and marks the original as VOID. Returns: transaction_id, business, transaction_status, transaction_reference, trans_source_id, transaction_dt, last_mod_dt.

get_single_perkville_void_transaction_by_id

Get a specific void transaction in Perkville by id. Returns: business, last_mod_dt, trans_source_id, transaction_dt, transaction_id, transaction_reference, transaction_status, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, resource_uri, state. Required: id.

create_a_perkville_void_transaction

Void a Perkville transaction by creating a new transaction with the negative amount of the original and marking the original as VOID. Returns: business, last_mod_dt, trans_source_id, transaction_dt, transaction_id, transaction_reference, transaction_status, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, resource_uri, state.…

list_all_perkville_users

List Perkville users, filterable by email, user_id, last_mod_dt, or Identify User Flow code. Returns: user_id, first_name, last_name, phone_number, birthday, emails, connections, last_mod_dt, resource_uri.

get_single_perkville_user_by_id

Get a single Perkville user by id. Returns: user_id, first_name, last_name, phone_number, birthday, emails, connections, resource_uri, last_mod_dt, address_1, address_2, business, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

list_all_perkville_user_business_agreements

List user business agreements in Perkville. A business filter is required for list requests. Returns: id, agreement_id, agreement_version, business, user, email, first_name, last_name, agreement_dt, resource_uri. Required: business. The business__in filter style is not supported.

get_single_perkville_user_business_agreement_by_id

Get a single user business agreement by id in Perkville. Returns: id, agreement_id, agreement_version, business, user, email, first_name, last_name, agreement_dt, resource_uri, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: id.

create_a_perkville_user_business_agreement

Create a user business agreement acceptance in Perkville, recording that a user has agreed to a business's agreement terms. Returns: agreement_dt, agreement_id, agreement_version, business, email, first_name, last_name, resource_uri, user, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state. Required: business, agreement_id,…

perkville_user_business_agreements_bulk_create

Bulk create user business agreement records for a Perkville business to record acceptance of join-flow agreement terms for one or more users. Returns: business, user_business_agreements, address_1, address_2, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, resource_uri, state. Required: business, user_business_agreements. Limit of 50 records per…

get_single_perkville_voucher_by_id

Get a single voucher in Perkville by id. A voucher represents a redeemed reward coupon created when a customer redeems points. Returns: voucher_id, business, created_datetime, details, expiration_date, external_coupon_code, location, network_reward_url, perk, perk_description, perk_fine_print, point_cost, promotion_fine_print, status, title, user, address_1, address_2, city, country_code,…

update_a_perkville_voucher_by_id

Update a Perkville voucher by changing its status (mark as USED) and/or expiration date. Returns the patched voucher object including voucher_id, status, title, business, user, perk, point_cost, expiration_date, and details. Required: id.

list_all_perkville_vouchers

List Perkville vouchers, filtered by business and optionally by user. Returns: voucher_id, status, business, user, perk, location, transaction, created_datetime, expiration_date, point_cost, resource_uri, external_coupon_code, marketplace_business, network_reward_url. The business parameter is required unless filtering by voucher_id.

list_all_perkville_challenges_view

List challenges from a user's perspective in Perkville, including completion rewards, requirement progress, and user-specific eligibility and join status. Returns: challenge_id, name, user_display_status, join_status, requirements, completion_rewards, restriction_reasons. Required: business. Challenges are returned in the order Perkville displays them to users.

list_all_perkville_earning_view

List a Perkville business' earning rules from a user's perspective, including active bonuses and user-specific progress and eligibility details. Returns: business, completes_referral, date_range_bonuses, description, display_name, display_order, frequency_bonuses, recurring_bonuses, instant_rewards, loc_id, perk_id, points, referral_eligibility_days, referral_eligibility_explanation,…

list_all_perkville_levels_view

List user-facing levels for a Perkville business in display order, including unlock requirements and user-specific status such as current level and progress. Returns: business, level_id, name, point_floor, require_active_membership, unlocked_dt, is_current_level, badge_url, unlockable_perks, unlockable_privileges, points_accumulated_toward_level, points_until_this_level, level_validity_interval,…

list_all_perkville_redeeming_view

List a Perkville business's redeemable rewards from the perspective of a user. Results are location-specific by default; set all_locs=true to return perks across all locations. Returns: business, can_redeem, description, display_order, external_reward_url, fine_print, from_date, loc_id, must_redeem_at_home_location, perk_id, picture_card, points, redemption_instructions, redemption_limit_count,…

list_all_perkville_agreements_view

List user-facing agreement terms by business in Perkville, including active agreement text, version, and whether the user has agreed. Returns: business, agreement_id, agreement_type, apply_to_join_flow, agreement_version_id, version, text, is_active, has_agreed, agreed_dt. Required: business.

get_single_perkville_user_voucher_by_id

Get a specific user voucher in Perkville by id, returning user-facing details beyond the base Voucher endpoint including title, perk description, fine print, perk use type, and status. Returns: voucher_id, title, status, perk, perk_description, perk_fine_print, point_cost, created_datetime. Required: id.

list_all_perkville_top_earners

List top earners at a Perkville business by points earned in descending order. Returns: first_name, last_name, user_id, last_earned_location_id, home_location_id, points_earned, connection_id, primary_email_address, primary_user_address. Required: business.

list_all_perkville_transaction_report

List transactions at a Perkville business by business primary key without requiring a specific user. Returns: transaction_id, business_id, user_id, points, classification, title, trans_status, transaction_dt, last_mod_dt, perk_id, locations_id, quantity, trans_source_id. Required: business_id. For best performance, filter by (business_id, from_datetime, to_datetime) or (business_id,…

create_a_perkville_identify

Generate a single-use, short-lived Identify Token in Perkville to initiate the identify user flow. Returns: identify_token, expire_datetime, staff_id, business, created, bill_payer, resource_uri, staff_role, staff_description, user. The token is valid for 30 minutes from creation and becomes invalid after first use.

perkville_oauth_token

Exchange an authorization code or user password for a Perkville OAuth2 access token. Returns: access_token, scopes, staff_id, business, created, bill_payer, resource_uri, staff_role, staff_description, user. Required: grant_type, plus either (code and redirect_uri) for the authorization_code grant or (username and password) for the password grant; client_id is always required. The authorization…

list_all_perkville_me

Get the current authenticated Perkville user. Returns: user_id, first_name, last_name, last_mod_dt, phone_number, birthday, emails, connections, resource_uri, address_1, address_2, business, city, country_code, external_location_id, latitude, location_id, longitude, name, postal_code, state.

Why Truto

Why use Truto’s MCP server for Perkville

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Perkville in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Perkville account

Use Truto’s frontend SDK to connect your customer’s Perkville account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Perkville

Truto’s Proxy API is a 1-to-1 mapping of the Perkville API. You call us, we call Perkville, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Perkville’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Perkville on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication with Perkville work through Truto?

Perkville uses OAuth-based authentication, and Truto handles the full token exchange and refresh lifecycle for you via the perkville_oauth_token flow. Your end users connect their Perkville account once through Truto's connection UI or API, and you receive a stable connection to make calls against.

Can I write data back to Perkville, or is it read-only?

It's fully two-way. You can create transactions, void transactions, perks, referrals, connections, user business agreements, and identify calls, and you can update connections, perks, and vouchers. This covers point awarding, refunds, voucher redemption, and member onboarding workflows.

How do I handle high-volume writes like nightly transaction syncs?

Perkville supports bulk endpoints for the highest-volume resources — up to 200 records per call for transactions and up to 50 per call for external members and user business agreements. Use trans_source_id on transactions to make bulk writes idempotent and safe to retry.

How do I make sure loyalty actions attribute to the correct customer in my system?

Use the external members resource to map your internal customer identifiers to Perkville accounts. Once members are upserted with your external_system_id, subsequent transactions, referrals, and lookups can be reliably tied back to the right record on both sides.

Can I build a member-facing UI without stitching together multiple raw endpoints?

Yes. Perkville exposes purpose-built view endpoints — earning view, levels view, challenges view, redeeming view, agreements view — that return pre-shaped data optimized for rendering member dashboards, tier progress, and gamification widgets directly in your app.

Does Truto support custom fields defined in a merchant's Perkville account?

Yes. You can list and fetch custom attributes and custom attribute values, as well as connection attributes, so any merchant-specific fields configured in Perkville are accessible through the same connection without special handling.

Perkville

Get Perkville integrated into your app

Our team understands what it takes to make a Perkville integration successful. A short, crisp 30 minute call with folks who understand the problem.