Dev

Hi Developer,

Proposales™ is a hackable proposal tool. Always 100% structured data — and modern APIs & Webhooks that lets you easily build automated workflows ⚡️

Proposales is the #1 proposal tool for hotels that sales teams love using. A beautiful and human‑friendly user interface built on a data‑friendly backbone.

Webhooks

Integrate with our webhooks to get notified every time an important event occurs. You can specify multiple URLs that our webhook can call, and specify what URL we should call at specific events.
SECURITY
Webhook Signatures
Proposales signs all webhook requests so you can verify that they originated from Proposales. Each webhook trigger contains the HTTP header X-Proposales-Webhook. The header is a base64 digest of an HMAC-SHA1 hash.
'proposal-sent'
{  
   "id": 1,  
    "action": "proposal-sent",  
    "timestamp": "2019-06-22T11:11:38.207Z",  
    "proposal": {  
        […]   
    }
}
'proposal-accepted'
{  
    "id": 1,  
    "action": "proposal-accepted",  
    "timestamp": "2019-06-22T11:11:38.207Z",  
    "proposal": {    
        "id": 258,    
        "sentAt": "2019-06-19T07:57:02.459Z",    
        "daysValid": 30,    
        "expiresAt": null,    
        "expirationHandledAt": null,    
        "acceptedAt": "2019-06-22T11:11:37.207Z",            
        "rejectedAt": null,    
        "withdrawnAt": null,    
        "firstViewedAt": "2019-06-19T07:57:14.987Z",            "lastViewedAt": "2019-06-22T11:10:38.207Z",            
        "token": "bd6d4812-fdff-4be7-8da7-5b50cd671835",            
        "title": "Example Proposal",    
        "vatFree": false,    
        "numberOfViews": 3,    
        "description": {      
            "id": 1268,      
            "plainText": "Welcome to our hotel! This is a text area placed above the products and is perfect to use for a shorter introduction. This is only an example, please edit or remove it before sending."    
        },    
        "recipients": [      
             {        
                "id": 3073,        
                "email": "carl@proposales.com",                        
                "title": "",        
                "lastName": "Rockert",        
                "firstName": "Carl",        
                "companyName": "",        
                "phoneNumber": "",        
                "customerType": "private"      
             }    
        ],    
        "products": [      
            {        
                "id": 1038,        
                "unit": "day",        
                "price": 10000.0,        
                "currency": "SEK",        
                "title": "Large Meeting Room",                        
                "description": "The meeting room can fit up to 150 people.",  
                "vatRate": 0.25,        
                "priceType": "absolute",                        
                "fixedDiscount": null,                        
                "percentDiscount": null,        
                "quantity": 1,        
                "startTime": "2019-09-19T09:00:00.000Z",                        "endTime": "2019-09-19T17:00:00.000Z",                        "meta": {          
                    "functionSpace": "CONF123",                              "calendarBlock": true,                              
                     "allowSimilar": false        
                }      
            },      
            {        
                "id": 1039,        
                "unit": "day",        
                "price": 399.0,        
                "currency": "SEK",        
                "title": "Dinner",        
                "description": "Dinner for 120 persons.",                        "vatRate": 0.25,        
                "priceType": "absolute",                        
                "fixedDiscount": null,                        
                "percentDiscount": null,        
                "quantity": 120,        
                "startTime": "2019-09-19T18:00:00.000Z",                        "endTime": "2019-09-19T23:00:00.000Z",                        "meta": {          
                    "functionSpace": "HALL1",                              "calendarBlock": false        
                }      
            }    
        ],    
        "attachments": [],    
        "createdBy": {      
            "id": 2,      
            "email": "mikael@proposales.com",                  
            "firstName": "Mikael",      
            "lastName": "Olsson",      
            "title": "Founder",      
            "phoneNumber": ""    
        },    
        "language": "sv",    
        "originallyCreatedAt": "2019-06-19T07:50:11.586Z",            "isLatest": true,    
        "versionId": 1,    
        "acceptedByMobile": false,    
        "acceptedByIp": "1.2.3.4",    
        "inclVat": false,    
        "vatVisible": true,    
        "cc": ["joakim@proposales.com"],            "markedAsAcceptedByUser": null  
    }
}
'proposal-rejected'
{  
    "id": 1,  
    "action": "proposal-rejected",  
    "timestamp": "2019-06-22T11:11:38.207Z",  
    "proposal": {    
        "id": 258,    
        "sentAt": "2019-06-19T07:57:02.459Z",    
        "daysValid": 30,    
        "expiresAt": null,    
        "expirationHandledAt": null,    
        "acceptedAt": null,    
        "rejectedAt": "2019-06-22T11:11:37.207Z",           "withdrawnAt": null,    
        "firstViewedAt": "2019-06-19T07:57:14.987Z",           "lastViewedAt": "2019-06-22T11:10:38.207Z",           "token": "bd6d4812-fdff-4be7-8da7-5b50cd671835",           "title": "Example Proposal",    
        "vatFree": false,    
        "numberOfViews": 3,    
        "description": {      
            "id": 1268,      
            "plainText": "Welcome to our hotel! This is a text area placed above the products and is perfect to use for a shorter introduction. This is only an example, please edit or remove it before sending."    
        },    
        "recipients": [      
            {        
                "id": 3073,        
                "email": "carl@proposales.com",      
                "title": "",        
                "lastName": "Rockert",        
                "firstName": "Carl",        
                "companyName": "",        
                "phoneNumber": "",        
                "customerType": "private"      
            }    
        ],    
        "products": [      
            {        
                "id": 1038,        
                "unit": "day",        
                "price": 10000.0,        
                "currency": "SEK",        
                "title": "Large Meeting Room",                        "description": "The meeting room can fit up to 150 people.",        
                "vatRate": 0.25,        
                "priceType": "absolute",                       "fixedDiscount": null,                       "percentDiscount": null,        
                "quantity": 1,        
                "startTime": "2019-09-19T09:00:00.000Z",                       "endTime": "2019-09-19T17:00:00.000Z",                       "meta": {          
                    "functionSpace": "CONF123",                             "calendarBlock": true,                             "allowSimilar": false        
                }
            },      
            {        
                "id": 1039,        
                "unit": "day",        
                "price": 399.0,        
                "currency": "SEK",        
                "title": "Dinner",        
                "description": "Dinner for 120 persons.",                     "vatRate": 0.25,        
                "priceType": "absolute",                       "fixedDiscount": null,                       "percentDiscount": null,        
                "quantity": 120,        
                "startTime": "2019-09-19T18:00:00.000Z",                       "endTime": "2019-09-19T23:00:00.000Z",                       "meta": {          
                    "functionSpace": "HALL1",                             "calendarBlock": false        
                }      
            }  
        ],    
        "attachments": [],    
        "createdBy": {      
            "id": 2,      
            "email": "mikael@proposales.com",                 "firstName": "Mikael",      
            "lastName": "Olsson",      
            "title": "Founder",      
            "phoneNumber": ""    
        },    
        "language": "sv",    
        "originallyCreatedAt": "2019-06-19T07:50:11.586Z",           "isLatest": true,    
        "versionId": 1,    
        "acceptedByMobile": false,    
        "acceptedByIp": "1.2.3.4",    
        "inclVat": false,    
        "vatVisible": true,    
        "cc": ["joakim@proposales.com"],           "markedAsAcceptedByUser": null  
    }
}