Introduction
Cubby can send outbound webhook notifications to Make.com scenarios when key events occur in the system. These webhooks allow you to build automations that react to events such as a new lead inquiry, a move-in, a move-out, a tenant becoming delinquent, or an inbound text message from a tenant.
Webhooks are sent as HTTP POST requests with a JSON body to URLs you configure in Make.com. Each webhook URL is registered per event type in Cubby's server configuration. Cubby will attempt delivery and will log a failure to our error tracker if the webhook URL does not respond with HTTP 200.
To enable Make.com webhooks for your organization, contact support@cubbystorage.com.
Getting Started
You can install the Make.com Cubby app Here.
Here is a short video walking you through how to set it up: watch the walkthrough.
Topic ID
Each webhook payload includes a topicId field. This is a free-form string set at the organization level in Cubby. You can use it inside Make.com to route events coming into a single webhook URL to different branches of a scenario — for example if you operate multiple brands or organizations.
IDs
Example Entity IDs
cust_FiUtBj8JkF
lease_jOi8joH3Hu
org_Ji9JKfKkhuR
fac_C7bSZyPT6fp
pg_4a2da7d271a
unit_GfNkzV4itfk
Entity IDs follow the same <prefix>_<alpha> format used throughout Cubby's external API.
Money
Money values are integers representing the number of cents (e.g. 9500 means $95.00).
Date and Time
Dates and times follow ISO-8601:
- Date-only fields (e.g.
moveInDate,dueDate) useyyyy-MM-ddwith no time component. - Timestamps ending in
Zare in UTC (e.g.2024-03-01T12:00:00.000000Z). - Timestamps with no timezone suffix are in the local time zone of the facility the record belongs to.
Webhooks
- Online Lead Created
- Move In
- Move Out
- Lease Documents Completed
- Auction Scheduled
- Tenant Overlocked
- Overlock Remove Needed
- SMS Received
Online Lead Created
Payload
{
"topicId": "your-topic-id",
"lead": {
"leadId": "lead_Hj8JkFiUtB",
"createdAt": "2024-06-01T14:23:00.000000Z",
"updatedAt": "2024-06-01T14:23:00.000000Z",
"customerId": "cust_FiUtBj8JkF",
"source": "WEBSITE | WALK_IN | CALL | CONTACT_FORM | ABANDONED_CHECKOUT | FAILED_CHECKOUT | RESERVED_CHECKOUT | SMS_MESSAGE | WAITLIST_FORM | RESERVATION_FORM | REFERRAL | SEARCH_ENGINE | DIGITAL_AD | BILLBOARD | PHYSICAL_AD | AI_VOICE_AGENT | SPAREFOOT | OTHER",
"customSource": "Google Ad Campaign",
"status": "NEW | ON_HOLD | IN_PROGRESS_HOT | IN_PROGRESS_COLD | CONVERTED | UNQUALIFIED | DUPLICATE | RESERVATION",
"facilityId": "fac_C7bSZyPT6fp",
"pricingGroupId": "pg_4a2da7d271a",
"message": "Looking for a 10x10 unit starting next month.",
"targetMoveInDate": "2024-07-01"
},
"customer": {
"customerId": "cust_FiUtBj8JkF",
"createdAt": "2024-06-01T14:23:00.000000Z",
"updatedAt": "2024-06-01T14:23:00.000000Z",
"name": "Jane Smith",
"firstName": "Jane",
"lastName": "Smith",
"companyName": null,
"military": false,
"contact": {
"email": "jane@example.com",
"phone": "555-867-5309",
"address": "123 Main St",
"address2": null,
"city": "Springfield",
"state": "IL",
"zip": "62701",
"country": "US"
}
},
"facility": {
"facilityId": "fac_C7bSZyPT6fp",
"name": "Springfield Storage",
"contact": {
"address": "456 Oak Ave",
"city": "Springfield",
"state": "IL",
"zip": "62701",
"country": "US",
"phone": "555-555-0100",
"email": "springfield@example.com"
},
"organizationId": "org_Ji9JKfKkhuR"
},
"pricingGroup": {
"pricingGroupId": "pg_4a2da7d271a",
"facilityId": "fac_C7bSZyPT6fp",
"name": "10x10 Climate Controlled",
"width": 10,
"depth": 10,
"height": 8,
"vehicleStorage": false,
"parking": false,
"standardRate": 12500,
"webRate": 10900,
"availableUnits": 3,
"features": ["Climate Controlled", "Drive-up Access"]
},
/* The following fields are included for backward compatibility.
Prefer the structured objects above for new integrations. */
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "555-867-5309",
"source": "WEBSITE",
"targetMoveInDate": "2024-07-01",
"facilityId": "fac_C7bSZyPT6fp",
"facilityName": "Springfield Storage",
"pricingGroupId": "pg_4a2da7d271a",
"pricingGroupName": "10x10 Climate Controlled"
}
Fired when a new lead inquiry is created via an online channel (website checkout, contact form, waitlist, reservation form, etc.).
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key configured in Cubby |
lead |
The new lead record. See Lead. |
customer |
The customer who submitted the inquiry. See Customer. |
facility |
The facility the lead expressed interest in. null if no facility was specified. See Facility. |
pricingGroup |
The pricing group (unit type) the lead expressed interest in. null if none specified. See Pricing Group. |
name |
Customer full name (legacy — use customer.name) |
email |
Customer email (legacy — use customer.contact.email) |
phone |
Customer phone (legacy — use customer.contact.phone) |
source |
Lead source (legacy — use lead.source) |
targetMoveInDate |
Desired move-in date (legacy — use lead.targetMoveInDate) |
facilityId |
Facility ID (legacy — use facility.facilityId) |
facilityName |
Facility name (legacy — use facility.name) |
pricingGroupId |
Pricing group ID (legacy — use pricingGroup.pricingGroupId) |
pricingGroupName |
Pricing group name (legacy — use pricingGroup.name) |
Move In
Payload
{
"topicId": "your-topic-id",
"lease": {
"leaseId": "lease_jOi8joH3Hu",
"createdAt": "2024-06-15T09:00:00.000000Z",
"updatedAt": "2024-06-15T09:00:00.000000Z",
"moveInDate": "2024-06-15",
"moveOutDate": null,
"monthlyRentalAmount": 12500,
"customerId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"pricingGroupId": "pg_4a2da7d271a",
"facilityId": "fac_C7bSZyPT6fp",
"paid": true,
"autoPayEnabled": false,
"paidThroughDate": "2024-07-14",
"nextChargeAmount": 12500,
"nextChargeDate": "2024-07-15",
"overlockNeeded": false,
"coverage": {
"coverageType": "CUBBY | PRIVATE | NONE",
"coverageLevelId": "cvl_abc123",
"startDate": "2024-06-15",
"premiumAmount": 1200,
"coverageAmount": 300000
}
},
"unit": {
"unitId": "unit_GfNkzV4itfk",
"name": "A101",
"width": 10,
"depth": 10,
"height": 8,
"area": 100,
"volume": 800,
"overlocked": false,
"facilityId": "fac_C7bSZyPT6fp",
"pricingGroupId": "pg_4a2da7d271a",
"floorName": "Ground Floor"
},
"customer": {
"customerId": "cust_FiUtBj8JkF",
"name": "Jane Smith",
"firstName": "Jane",
"lastName": "Smith",
"military": false,
"contact": {
"email": "jane@example.com",
"phone": "555-867-5309",
"address": "123 Main St",
"city": "Springfield",
"state": "IL",
"zip": "62701",
"country": "US"
}
},
"facility": {
"facilityId": "fac_C7bSZyPT6fp",
"name": "Springfield Storage",
"organizationId": "org_Ji9JKfKkhuR",
"contact": {
"address": "456 Oak Ave",
"city": "Springfield",
"state": "IL",
"zip": "62701",
"phone": "555-555-0100"
}
},
"pricingGroup": {
"pricingGroupId": "pg_4a2da7d271a",
"facilityId": "fac_C7bSZyPT6fp",
"name": "10x10 Climate Controlled",
"width": 10,
"depth": 10,
"standardRate": 12500,
"webRate": 10900
},
"discounts": [
{
"discountId": "disc_Xk9mPqR3",
"name": "First Month Free",
"type": "FREE_MONTHS",
"active": true,
"startDate": "2024-06-15",
"applicationMethod": "UPFRONT",
"upfrontFreeMonths": 1
}
],
"balances": {
"totalDue": 0,
"deposit": 0,
"prepaid": 12500
},
"createdBy": {
"id": "user_Lm4NpQs7",
"name": "Alex Manager"
}
}
Fired when a tenant's move-in is completed and the lease becomes active.
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
lease |
The newly active lease. See Lease. |
unit |
The unit being rented. See Unit. |
customer |
The tenant. See Customer. |
facility |
The facility where the unit is located. See Facility. |
pricingGroup |
The pricing group the unit belongs to. See Pricing Group. |
discounts |
Any discounts applied to the lease. See Discount. |
balances |
Current account balances at the time of move-in. See Balances. |
createdBy |
The manager who processed the move-in, if applicable. null for self-serve online move-ins. |
createdBy.id |
Manager's user ID |
createdBy.name |
Manager's display name |
Move Out
Payload
{
"topicId": "your-topic-id",
"lease": {
"leaseId": "lease_jOi8joH3Hu",
"moveInDate": "2024-06-15",
"moveOutDate": "2024-09-30",
"monthlyRentalAmount": 12500,
"customerId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"facilityId": "fac_C7bSZyPT6fp",
"paid": true,
"paidThroughDate": "2024-09-30",
"overlockNeeded": false
/* ... full lease fields ... */
},
"unit": {/* ... */},
"customer": {/* ... */},
"facility": {/* ... */},
"pricingGroup": {/* ... */},
"discounts": [{/* ... */}],
"balances": {
"totalDue": 0,
"deposit": 0,
"prepaid": 0
}
}
Fired when a tenant's move-out is processed and the lease is closed.
Payload Fields
Same as Move In, minus the createdBy field. See the entity reference sections for full field details.
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
lease |
The closed lease. moveOutDate will be set. See Lease. |
unit |
The vacated unit. See Unit. |
customer |
The tenant. See Customer. |
facility |
The facility. See Facility. |
pricingGroup |
The pricing group. See Pricing Group. |
discounts |
Discounts that were applied to the lease. See Discount. |
balances |
Final account balances at the time of move-out. See Balances. |
Lease Documents Completed
Payload
{
"topicId": "your-topic-id",
"lease": {
"leaseId": "lease_jOi8joH3Hu",
"moveInDate": "2024-06-15",
"customerId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"facilityId": "fac_C7bSZyPT6fp"
/* ... full lease fields ... */
},
"unit": {/* ... */},
"customer": {/* ... */},
"facility": {/* ... */},
"pricingGroup": {/* ... */},
"discounts": [{/* ... */}],
"balances": {
"totalDue": 0,
"deposit": 0,
"prepaid": 12500
}
}
Fired when a tenant has completed signing all required lease documents (rental agreement, addenda, etc.).
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
lease |
The lease whose documents were completed. See Lease. |
unit |
The unit. See Unit. |
customer |
The tenant. See Customer. |
facility |
The facility. See Facility. |
pricingGroup |
The pricing group. See Pricing Group. |
discounts |
Discounts applied to the lease. See Discount. |
balances |
Current account balances. See Balances. |
Auction Scheduled
Payload
{
"topicId": "your-topic-id",
"lease": {
"leaseId": "lease_jOi8joH3Hu",
"moveInDate": "2024-01-01",
"delinquencyStartDate": "2024-04-15",
"monthlyRentalAmount": 12500,
"customerId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"facilityId": "fac_C7bSZyPT6fp",
"paid": false,
"overlockNeeded": true
/* ... full lease fields ... */
},
"unit": {/* ... */},
"customer": {/* ... */},
"facility": {/* ... */},
"pricingGroup": {/* ... */},
"discounts": [{/* ... */}],
"balances": {
"totalDue": 38500,
"deposit": 0,
"prepaid": 0
}
}
Fired when an auction is scheduled for a delinquent tenant's unit.
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
lease |
The delinquent lease with an auction scheduled. See Lease. |
unit |
The unit to be auctioned. See Unit. |
customer |
The delinquent tenant. See Customer. |
facility |
The facility. See Facility. |
pricingGroup |
The pricing group. See Pricing Group. |
discounts |
Discounts applied to the lease. See Discount. |
balances |
Current account balances including the amount owed. See Balances. |
Tenant Overlocked
Payload
{
"topicId": "your-topic-id",
"lease": {
"leaseId": "lease_jOi8joH3Hu",
"moveInDate": "2024-01-01",
"delinquencyStartDate": "2024-04-15",
"monthlyRentalAmount": 12500,
"customerId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"facilityId": "fac_C7bSZyPT6fp",
"paid": false,
"overlockNeeded": true
/* ... full lease fields ... */
},
"unit": {
"unitId": "unit_GfNkzV4itfk",
"name": "A101",
"overlocked": true
/* ... full unit fields ... */
},
"customer": {/* ... */},
"facility": {/* ... */},
"pricingGroup": {/* ... */},
"discounts": [{/* ... */}],
"balances": {
"totalDue": 25000,
"deposit": 0,
"prepaid": 0
}
}
Fired when a delinquent tenant's unit is overlocked. Note that unit.overlocked will be true in this payload.
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
lease |
The delinquent lease. See Lease. |
unit |
The overlocked unit. overlocked will be true. See Unit. |
customer |
The delinquent tenant. See Customer. |
facility |
The facility. See Facility. |
pricingGroup |
The pricing group. See Pricing Group. |
discounts |
Discounts applied to the lease. See Discount. |
balances |
Current account balances including the amount owed. See Balances. |
Overlock Remove Needed
Payload
{
"topicId": "your-topic-id",
"lease": {
"leaseId": "lease_jOi8joH3Hu",
"moveInDate": "2024-01-01",
"monthlyRentalAmount": 12500,
"customerId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"facilityId": "fac_C7bSZyPT6fp",
"overlockNeeded": false
/* ... full lease fields ... */
},
"unit": {
"unitId": "unit_GfNkzV4itfk",
"name": "A101",
"overlocked": true
/* ... full unit fields ... */
},
"customer": {/* ... */},
"facility": {/* ... */},
"pricingGroup": {/* ... */},
"discounts": [{/* ... */}],
"balances": {
"totalDue": 0,
"deposit": 0,
"prepaid": 0
}
}
Fired when a tenant who was overlocked has paid enough to clear the overlock, so the physical lock now needs to come off the unit. This is the counterpart to Tenant Overlocked — use it to tell staff that a lock is ready to be removed.
The payload is a snapshot taken at the moment Cubby cleared the overlock. lease.overlockNeeded is therefore already false, while unit.overlocked is still true: the lock is still on the door and nobody has removed it yet.
This webhook only fires when there is a physical lock to remove. At facilities where Cubby controls smart locks, the lock is released automatically when the balance clears and no webhook is sent. It also does not fire for leases that are no longer active.
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
lease |
The lease that is no longer overlocked. overlockNeeded will be false. See Lease. |
unit |
The unit the lock must be removed from. overlocked will be true. See Unit. |
customer |
The tenant who paid. See Customer. |
facility |
The facility. See Facility. |
pricingGroup |
The pricing group. See Pricing Group. |
discounts |
Discounts applied to the lease. See Discount. |
balances |
Account balances after the payment. See Balances. |
SMS Received
Payload
{
"topicId": "your-topic-id",
"messageId": "SM7f3c1b2a9d4e5f6071829a3b4c5d6e7f",
"orgId": "org_Ji9JKfKkhuR",
"facilityId": "fac_C7bSZyPT6fp",
"from": "+15551234567",
"to": "+15559876543",
"body": "Can I get my gate code resent?",
"receivedAt": "2026-07-15T12:00:00Z",
"customer": {
"customerId": "cust_FiUtBj8JkF",
"name": "Jane Doe"
/* ... full customer fields ... */
}
}
Fired when an inbound text message arrives on one of your Cubby phone numbers. Unlike the other webhooks on this page, this one is not tied to a lease — it reports the message itself, plus the tenant it came from when Cubby can identify one.
Messages that Cubby sends from your own numbers do not produce this webhook; only inbound messages from outside numbers do.
facilityId is populated only when the number that received the message serves exactly one facility. If you share a number across several facilities, it is null and you should route on to instead.
customer is populated when the sending phone number matches a contact with at least one active lease. Messages from leads, past tenants, and unknown numbers arrive with customer set to null, so check for it before using it in a scenario.
The same message may be delivered more than once if a delivery attempt fails and is retried. Use messageId, which is stable for the life of the message, to discard duplicates.
Payload Fields
| Field | Description |
|---|---|
topicId |
Organization-level routing key |
messageId |
The carrier's unique identifier for the message. Use it to deduplicate. |
orgId |
The ID of the organization that owns the receiving number. |
facilityId |
The facility the receiving number belongs to, or null when the number serves more than one facility. |
from |
The sender's phone number, in E.164 format. |
to |
The Cubby number that received the message, in E.164 format. |
body |
The text of the message. Attached media is not included. |
receivedAt |
When Cubby received the message, as a UTC timestamp. |
customer |
The tenant the number belongs to, or null when the sender is not a current tenant. See Customer. |
Entity Reference
Customer
Customer Object
{
"customerId": "cust_FiUtBj8JkF",
"tenantId": "cust_FiUtBj8JkF",
"createdAt": "2024-01-15T10:30:00.000000Z",
"updatedAt": "2024-06-01T14:23:00.000000Z",
"name": "Jane Smith",
"firstName": "Jane",
"lastName": "Smith",
"companyName": null,
"dateOfBirth": "1985-04-12",
"military": false,
"contact": {
"email": "jane@example.com",
"phone": "555-867-5309",
"address": "123 Main St",
"address2": "Apt 4B",
"city": "Springfield",
"state": "IL",
"zip": "62701",
"country": "US"
},
"idType": "DRIVERS_LICENSE | PASSPORT | STATE_ID | OTHER",
"idNumber": "D123-4567-8901",
"leases": ["lease_jOi8joH3Hu"],
"leads": ["lead_Hj8JkFiUtB"]
}
| Field | Description |
|---|---|
customerId |
Unique customer ID |
tenantId |
Alias for customerId (legacy field, same value) |
name |
Full name |
firstName |
First name |
lastName |
Last name |
companyName |
Company name, if applicable |
dateOfBirth |
Date of birth (yyyy-MM-dd) |
military |
Whether the customer has indicated military status |
contact |
Contact details (address, phone, email) |
idType |
Government ID type |
idNumber |
Government ID number |
leases |
IDs of leases associated with this customer |
leads |
IDs of leads associated with this customer |
PII fields (name, firstName, lastName, contact, etc.) are omitted if your integration does not have PII access enabled.
Lead
Lead Object
{
"leadId": "lead_Hj8JkFiUtB",
"createdAt": "2024-06-01T14:23:00.000000Z",
"updatedAt": "2024-06-01T14:23:00.000000Z",
"customerId": "cust_FiUtBj8JkF",
"source": "WEBSITE",
"customSource": null,
"status": "NEW",
"facilityId": "fac_C7bSZyPT6fp",
"pricingGroupId": "pg_4a2da7d271a",
"unitId": null,
"message": "Looking for a 10x10 unit starting next month.",
"targetMoveInDate": "2024-07-01"
}
| Field | Description |
|---|---|
leadId |
Unique lead ID |
customerId |
The customer this lead belongs to |
source |
How the lead originated. One of: WALK_IN, CALL, CONTACT_FORM, ABANDONED_CHECKOUT, FAILED_CHECKOUT, RESERVED_CHECKOUT, SMS_MESSAGE, WAITLIST_FORM, RESERVATION_FORM, WEBSITE, REFERRAL, SEARCH_ENGINE, DIGITAL_AD, BILLBOARD, PHYSICAL_AD, AI_VOICE_AGENT, SPAREFOOT, OTHER |
customSource |
Free-text source label when source is OTHER |
status |
Current lead status. One of: NEW, ON_HOLD, IN_PROGRESS_HOT, IN_PROGRESS_COLD, CONVERTED, UNQUALIFIED, DUPLICATE, RESERVATION |
facilityId |
The facility the lead expressed interest in |
pricingGroupId |
The pricing group (unit type) the lead expressed interest in |
unitId |
A specific unit the lead is interested in, if applicable |
message |
Free-text message from the customer |
targetMoveInDate |
Customer's desired move-in date (yyyy-MM-dd) |
Lease
Lease Object
{
"leaseId": "lease_jOi8joH3Hu",
"createdAt": "2024-06-15T09:00:00.000000Z",
"updatedAt": "2024-06-15T09:00:00.000000Z",
"moveInDate": "2024-06-15",
"moveOutDate": null,
"monthlyRentalAmount": 12500,
"customerId": "cust_FiUtBj8JkF",
"tenantId": "cust_FiUtBj8JkF",
"unitId": "unit_GfNkzV4itfk",
"pricingGroupId": "pg_4a2da7d271a",
"facilityId": "fac_C7bSZyPT6fp",
"paid": true,
"autoPayEnabled": true,
"autoPayPaymentMethodId": "pm_Kj9mLpN2",
"paidThroughDate": "2024-07-14",
"nextChargeAmount": 12500,
"nextChargeDate": "2024-07-15",
"delinquencyStartDate": null,
"overlockNeeded": false,
"unitContents": "Furniture, boxes",
"storingVehicle": false,
"vehicle": null,
"rentChangeScheduledDate": null,
"rentChangeNewRentAmount": null,
"coverage": {
"coverageType": "CUBBY | PRIVATE | NONE",
"coverageLevelId": "cvl_abc123",
"startDate": "2024-06-15",
"premiumAmount": 1200,
"coverageAmount": 300000
},
"coverageChange": null,
"scheduledMoveOut": null,
"alternativeContacts": [
{
"name": "Bob Smith",
"phone": "555-999-0000",
"email": "bob@example.com",
"relationship": "Spouse"
}
]
}
| Field | Description |
|---|---|
leaseId |
Unique lease ID |
moveInDate |
Date the tenant moved in (yyyy-MM-dd) |
moveOutDate |
Date the tenant moved out. null for active leases. |
monthlyRentalAmount |
Current monthly rent in cents |
customerId |
The tenant's customer ID |
tenantId |
Alias for customerId (legacy field) |
unitId |
The rented unit |
pricingGroupId |
The pricing group the unit belongs to |
facilityId |
The facility where the unit is located |
paid |
Whether the account is current (no outstanding balance) |
autoPayEnabled |
Whether auto-pay is active |
autoPayPaymentMethodId |
Payment method used for auto-pay |
paidThroughDate |
The date through which rent has been paid (yyyy-MM-dd) |
nextChargeAmount |
Amount of the next scheduled charge in cents |
nextChargeDate |
Date of the next scheduled charge (yyyy-MM-dd) |
delinquencyStartDate |
Date the account became delinquent. null if current. |
overlockNeeded |
Whether an overlock has been flagged as needed for this unit |
unitContents |
Free-text description of what the tenant is storing |
storingVehicle |
Whether the tenant is storing a vehicle |
vehicle |
Vehicle details if storingVehicle is true. Contains type, licenseNumber, state. |
coverage |
Active protection plan details. null if no coverage. |
coverage.coverageType |
CUBBY (Cubby-managed), PRIVATE (tenant's own policy), or NONE |
coverage.premiumAmount |
Monthly premium in cents |
coverage.coverageAmount |
Coverage limit in cents |
rentChangeScheduledDate |
Date a scheduled rent change takes effect, if any |
rentChangeNewRentAmount |
New rent amount in cents for a scheduled rent change |
scheduledMoveOut |
Scheduled move-out details, if a notice has been given. Contains moveOutDate, noticeGivenDate, moveOutReason, customReason. |
alternativeContacts |
Emergency / alternate contacts on file |
Unit
Unit Object
{
"unitId": "unit_GfNkzV4itfk",
"name": "A101",
"width": 10,
"depth": 10,
"height": 8,
"area": 100,
"volume": 800,
"overlocked": false,
"facilityId": "fac_C7bSZyPT6fp",
"pricingGroupId": "pg_4a2da7d271a",
"leaseId": "lease_jOi8joH3Hu",
"floorName": "Ground Floor",
"free": false,
"insurable": true,
"accessInstructions": "First floor, turn left at the elevator.",
"walkthroughOrder": 12,
"rentability": {
"rentable": true,
"unrentableReason": null,
"unrentableReasonNote": null
}
}
| Field | Description |
|---|---|
unitId |
Unique unit ID |
name |
Unit identifier as shown on the facility map (e.g. "A101") |
width |
Width in feet |
depth |
Depth in feet |
height |
Height in feet |
area |
Floor area in square feet (width × depth) |
volume |
Volume in cubic feet (width × depth × height) |
overlocked |
Whether the unit currently has an overlock applied |
facilityId |
The facility this unit belongs to |
pricingGroupId |
The pricing group this unit belongs to |
leaseId |
The active lease on this unit. null if vacant. |
floorName |
The floor or section name where the unit is located |
free |
true if the unit is vacant and available to rent |
insurable |
Whether the unit is eligible for protection plan coverage |
accessInstructions |
Facility-provided directions to the unit |
rentability |
Rentability status. unrentableReason is one of: ACTIVE_LEASE, REPAIRS_REQUIRED, CLEANING_REQUIRED, UNDER_RENOVATION, USED_BY_FACILITY, OTHER |
Facility
Facility Object
{
"facilityId": "fac_C7bSZyPT6fp",
"name": "Springfield Storage",
"internalName": "SPFLD-01",
"organizationId": "org_Ji9JKfKkhuR",
"longitude": "-89.6501",
"latitude": "39.7817",
"contact": {
"address": "456 Oak Ave",
"address2": null,
"city": "Springfield",
"state": "IL",
"zip": "62701",
"country": "US",
"phone": "555-555-0100",
"email": "springfield@example.com"
}
}
| Field | Description |
|---|---|
facilityId |
Unique facility ID |
name |
Public-facing facility name |
internalName |
Internal reference name used by operators |
organizationId |
The organization this facility belongs to |
longitude |
Facility longitude coordinate |
latitude |
Facility latitude coordinate |
contact |
Physical address and contact details |
Pricing Group
Pricing Group Object
{
"pricingGroupId": "pg_4a2da7d271a",
"facilityId": "fac_C7bSZyPT6fp",
"name": "10x10 Climate Controlled",
"width": 10,
"depth": 10,
"height": 8,
"vehicleStorage": false,
"parking": false,
"standardRate": 12500,
"walkInRate": 13500,
"webRate": 10900,
"strikethroughRate": 12500,
"availableUnits": 3,
"features": ["Climate Controlled", "Drive-up Access"],
"discounts": ["disc_Xk9mPqR3"]
}
| Field | Description |
|---|---|
pricingGroupId |
Unique pricing group ID |
facilityId |
The facility this pricing group belongs to |
name |
Display name (e.g. "10x10 Climate Controlled") |
width |
Unit width in feet |
depth |
Unit depth in feet |
height |
Unit height in feet |
vehicleStorage |
Whether units in this group are for vehicle storage |
parking |
Whether units in this group are parking spaces |
standardRate |
Standard walk-up rate in cents |
walkInRate |
Counter rate quoted to walk-in customers in cents |
webRate |
Online/web rate in cents |
strikethroughRate |
Original price shown as struck-through on the website in cents |
availableUnits |
Number of vacant, rentable units in this group |
features |
List of feature labels (e.g. "Climate Controlled", "Drive-up Access") |
discounts |
IDs of discount programs currently active on this pricing group |
Discount
Discount Object
{
"discountId": "disc_Xk9mPqR3",
"name": "First Month Free",
"type": "FREE_MONTHS | PERCENTAGE | FLAT_AMOUNT",
"status": "ACTIVE | INACTIVE | EXPIRED",
"active": true,
"startDate": "2024-06-15",
"endDate": null,
"applicationMethod": "UPFRONT | ONGOING | DEFERRED",
"applicationAmount": 12500,
"upfrontFreeMonths": 1,
"upfrontPaidMonths": null,
"startAfterMonths": null,
"discountedMonths": null
}
| Field | Description |
|---|---|
discountId |
Unique discount ID |
name |
Discount program name |
type |
FREE_MONTHS, PERCENTAGE, or FLAT_AMOUNT |
status |
ACTIVE, INACTIVE, or EXPIRED |
active |
Whether this discount is currently being applied to the lease |
startDate |
Date the discount started on this lease (yyyy-MM-dd) |
endDate |
Date the discount ended or expires (yyyy-MM-dd). null if ongoing. |
applicationMethod |
How the discount is applied: UPFRONT, ONGOING, or DEFERRED |
applicationAmount |
Discount amount in cents (for flat-amount discounts) |
upfrontFreeMonths |
Number of free months given upfront (for FREE_MONTHS type) |
upfrontPaidMonths |
Number of months that must be paid to receive the free months |
startAfterMonths |
Months after move-in before a deferred discount begins |
discountedMonths |
Total number of months the discount applies |
Balances
Balances Object
{
"totalDue": 25000,
"deposit": 10000,
"prepaid": 0
}
| Field | Description |
|---|---|
totalDue |
Total outstanding balance owed by the tenant, in cents. A positive value means the tenant owes money. |
deposit |
Security deposit held on the account, in cents |
prepaid |
Prepaid credit on the account, in cents. A positive value means the tenant has a credit balance. |