Plugin Response Reference

The response variables can be accessed differently based on the plugin being used.

Reference

allowed type: bool
1 == content access allowed, 0 == content access denied
is_logged_in type: bool
1 == logged in, 0 == logged out
paywalled type: bool
1 == the page falls under a paywall rule, 0 == the page is free. A paywalled page can still be allowed, e.g. when the visitor subscribes or has meter left.
restricted type: bool
1 == the page cannot be metered and requires access, e.g. it was passed free: 2 or is past its time meter.
registration_required type: bool
Returned as 1 when the page is registration-only content and the visitor is not signed in. Any signed-in account can read it.
meter_limit type: int
The preset meter limit before auth prompt happens.
meter type: int
The number of walled pages used.
content_expiration type: date string [YYYY-mm-dd HH:ii:ss]
The date and time the article's time meter expires based on the duration set in the Time Meter settings in Settings > Paywall Rules. Calculations are done based on the timezone set in your account from Settings > Environment. This will not return if no content date is passed to Pigeon or the time meter is disabled.
credits type: int
Signed-in readers only. The credits the reader has left: their plan's credit allowance for this billing cycle, or their credit balance when Credit Mode is on. Not returned when neither applies.
credit_mode type: bool
Returned as 1 when Credit Mode is on for your account.
content_value type: int
Credit Mode: the number of credits this page costs.
landing_page type: string
The Pigeon page path the paywall ruleset leads with, e.g. a combo bundle. Empty when the ruleset uses the standard offers page.
custom_promotion_page type: string
The custom promotion page URL set on the paywall ruleset. Empty when none is set.
complementary type: bool
Returned as 1 when Pigeon skipped this page, e.g. its URL is on your exception list. The content is shown.
special_access type: bool
Returned as 1 when the visitor was let through without a paywall check, such as an allowed search engine crawler or a whitelisted IP.
disabled type: bool
JavaScript SDK only. Returned as 1 when Pigeon could not be reached (for example, a timeout). The SDK fails open: allowed is 1 and the content is shown.
user_status (DEPRECATED) type: bool
Same as is_logged_in. Kept for backwards compatibility.
profile type: object | null
Returns the user's profile when logged in, null if not logged in. When the visitor has access through a group's IP range, profile holds the group instead (see profile.ip_access).
profile.display_name type: string
profile.email type: string
profile.customer_id type: string
The reader's Pigeon customer ID.
profile.internal_id type: string
The optional id from your system, often provided when accounts are imported from your internal fulfillment system.
profile.gender type: string
male or female
profile.dob type: string
Date of Birth
profile.status type: bool
1 == enabled, 0 == disabled
The person is authorized to see the content when enabled.
profile.temp_access type: string
Date when temporary access expires.
profile.subscription_trial_expires type: string
Date when the reader's trial expires, if they are on one.
profile.ip_access type: bool
1 == accessing via a group's allowed IP range, 0 == not
When 1, profile describes the group, and only ip_access, logged_in, parent_id, parent_name, status and plans are returned.
profile.logged_in type: bool
Group IP access only. 1 when the visitor is also signed in to their own account.
profile.extend_{cust_name} Type: string | various
Pigeon allows for custom profile fields. This data is passed back in the format 'extend_{name of the custom field}'.
profile.parent_id Type: int
If set is the parent or group id for current user
profile.parent_name Type: string
If set is the parent or group name for current user
profile.plans Type: array | null
A list of active plan(s) attached to the account. Returns null if the account has no active plans. Always check if (profile.plans) before iterating.
profile.plans[0].access_id type: int
Represents the plan id. Plans are attached to paywall rulesets, so this can be used to identify what access level the plan has.
profile.plans[0].plan_id type: string
The plan's public hash, as used in its permalink.
profile.plans[0].term_id type: string
Every plan contains terms (i.e., monthly or annual). This is the item number of the reader's term, as used in the term's permalink.
profile.plans[0].access_tag type: string
Plans can be grouped by access tags (e.g., sports could be tagged to multiple plans). 'default' when the plan has no tag.
profile.plans[0].name type: string
The name of the plan followed by the name of the term.
profile.plans[0].start type: string (Y-m-d format)
Date when the current plan started.
profile.plans[0].next type: string (Y-m-d format)
Date when the next action takes place. Depending on the plan type this could be renewal, expiration, or hand off to another plan. Empty for complimentary accounts.
profile.plans[0].cc_expire type: string (m/Y format)
The card expiration date if there is a card on the plan.
profile.plans[0].type type: int
1 == Subscription, 2 == Trial, 3 == Complimentary
Schedule
a Demo