Publishing your App
Before your app can be published in the Camping.care App Store, it must pass a certification review. This document describes everything you need to prepare. Read it fully before submitting.
1. App Identity & Basic Information
Make sure the following are configured correctly in your App Store dashboard before submitting:
Field | Requirement |
App name | Unique, no trademark conflicts |
Description | Accurately reflects current functionality |
App URL | Production HTTPS URL, no query parameters |
Category | Most relevant category selected |
App icon | JPG or PNG |
Webhook URL's | Listed if used |
2. API Permissions (Scopes)
The Camping.care API has over 600 individual scopes. You must only register scopes your app actively uses.
2.1 What you need to document
For every scope registered in your app settings, provide:
- The scope name
- The specific feature in your app that requires it
- The data fields it accesses
An example:
Scope | Feature using it | Data accessed |
| Display reservation details in the app UI | Reservation ID, arrival/departure dates, accommodation type |
| Update reservation status after payment confirmation | Reservation status field |
2.2 Scope rules
- No speculative scopes. Do not register a scope because you might use it later. Future scope additions require re-certification.
- Write scopes need justification. Every write scope must map to a specific, user-initiated action.
- Minimise access to personal data. If a scope gives access to guest data, list only the fields your app actually displays or processes.
- Webhooks follow the same rule. Only subscribe to events your app actually handles.
3. Webhooks
Webhooks allow Camping Care to push real-time event notifications to your app, so you don't need to poll the API. When a relevant event occurs in the platform, such as a new reservation being made or a payment being added, Camping.care sends an HTTP POST request to your registered webhook URL with the event data.
3.1 When to use webhooks
Use webhooks when your app needs to react to things happening in Camping Care without the user having the app open. Common use cases:
Event category | Example use cases |
Reservations | Sync a new booking to an external channel manager or PMS; trigger a welcome email; update availability on a third-party platform |
Check-in / check-out | Notify a smart lock system to activate or deactivate access; update a guest communication tool |
Payments | Trigger an invoice in an external accounting system; confirm payment to a payment provider |
Invoices | Send a finalised invoice to a guest or export it to a bookkeeping tool |
Guest data changes | Keep a CRM or mailing list in sync when guest contact details are updated |
If your app only needs to display data when the operator has it open, you may not need webhooks at all, a regular API call when the app loads is sufficient.
3.2 How to register webhooks
In your app settings in the App Store dashboard, add the URL(s) your app should receive events on. You can register separate URLs per event type or use a single URL and route events by type in your own code.
3.3 Technical requirements
- Respond with HTTP 200 within 10 seconds. Camping Care will consider the delivery failed if your endpoint does not respond in time.
- Your endpoint must be idempotent. Camping Care may retry delivery on failure, so receiving the same event twice must not cause duplicate actions (e.g. double-sending an email or creating duplicate records).
- Your endpoint must be HTTPS.
- Process events asynchronously. Accept the webhook immediately and do any heavy processing in a background job; do not do slow work inside the request handler.
- Do not rely on event order. Events may occasionally arrive out of sequence; design your logic to handle this.
3.4 What to document for certification
For each webhook event your app subscribes to, explain:
- Which event(s) you subscribe to
- What your app does when it receives that event
- Whether any personal data in the payload is stored, and if so, for how long
An example:
Event | What the app does | Personal data stored? |
| Creates a booking record | Guest name, email. Retained for 2 years per out privacy policy |
| Marks the booking as paid in our system | No |
4. Privacy & Data Handling
Campsite operators are data controllers under the GDPR. When they install your app, you become a data processor. This section documents how you handle that responsibility.
4.1 Privacy Policy
You app must have a publicly accessible privacy policy before submission. It must:
- Include a English version (other languages are optional).
- Accurately describe what data your app collects, stores, and transmits.
- List any third-party services that receive data (e.g. your hosting provider, analytics tools); including their name, country, and purpose.
- State your data retention periods.
- Explain how users can request deletion of their data.
- Be linked in your App Store listing.
4.2 Data Inventory
Before submitting, map out every category of personal data your app touches. "Personal data" includes names, email addresses, phone numbers, IP addresses, booking details, and anything else that could identify an individual.
For each category, be able to answer:
- Is it stored by your app? If so, where and how long?
- Is it transmitted to a third party?
- What is the legal basis under GDPR Art. 6?
4.3 Technical data protection requirements
- HTTPS is required for your App URL.
- Tokens must be stored securely, never in
localStorage, plaintext files, or logs. - Personal data must be encrypted at rest if stored by your app.
- OAuth tokens must never be logged or sent to third parties.
- No scraping, your app may only access data through the Camping Care API/Webhooks, not by scraping the UI.
4.4 Data subject rights
You must have a process for operators (and their guests) to request deletion of their data from your systems. Be ready to describe:
- How they contact you (e.g. email address)
- Your (max) response time
- What gets deleted and how
- Whether a confirmation is sent
5. Technical Requirements
5.1 Authentication
Your app must implement the OAuth 2.0 flow correctly. See the Authentication docs for the full reference.
Key requirements:
- Exchange the
authtokensURL parameter for anidTokenandrefreshTokenviaPOST /v21/oauth/token. Never use the raw authtoken to call the API. - Refresh the
idTokenbefore it expires (every 3600 seconds) usingPOST /v21/oauth/refresh_token, do not force users to reinstall when the token expires. - Send the
X-Admin-Idheader on all adminstration-scoped API requests. - Handel
401 Unauthorizedresponses gracefully (auto-refresh or a clear prompt, no white screens).
5.2 Stability & Error handling
- The app must not crash or show unhandled exceptions during normal use.
- API errors (4xx/5xx) must result in a user-friendly message, not a raw error dump.
If you use webhooks:
- Respond with HTTP 200 within 10 seconds.
- Your endpoint must be idempotent, Camping Care may retry on failure.
- Do not poll the API more frequently than once every 60 seconds; use webhooks for real-time events.
- Your app must not make API calls on behalf of administrations it is not installed in.
5.3 Security
- No SQL injection vulnerabilities.
- No Cross-Site Scripting (XSS) vectors, escape all user-supplied output.
- No Cross-Site Request Forgery (CSRF) vulnerabilities.
- No hardcoded secrets in your codebase; use environment variables or a secret manager.
- Run a dependency audit (
npm audit,composer audit, etc.) and resolve any critical CVEs before submitting. - Apps that handle payments must provide a summary of a security audit or penetration test.
6. Live Demo
Every first-time publication and every major update requires a live demo with the Camping.care team. The demo verifies that the app works as described, that scope usage matches the declared purpose, and that the install/uninstall flow is clean.
6.1 Before scheduling the demo
Make sure:
- The app is deployed to its production HTTPS URL.
- The app is installed in a test Camping Care administration (park/campsite).
- All features described in the App Store listing are functional.
- This completed certification checklist has been submitted at least 3 business days before the demo.
6.2 What the demo covers
- You introduce the app: what it does and who it's for.
- Install flow: OAuth install from the App Store, scope consent screen.
- Core functionality walkthrough; all major features with real API calls.
- Privacy walkthrough: where personal data appears, how it's stored, how deletion works.
- Q&A and outcome.
6.3 Pass criteria
The demo passes if:
- The app installs and uninstalls cleanly, leaving no orphaned data.
- All listed features work without errors.
- Scope usage during the demo matches the declared purpose in Section 2.
- Personal data is not exposed unnecessarily.
- Error scenarios are handled gracefully, no crashes or raw stack traces.
- You can explain the data flow and storage architecture when asked.
6.4 Outcomes
Outcome | Meaning |
Pass | App is queued for publication |
Conditional pass | Minor issues to fix, resolve before publication |
Fail | Significant issues, resubmission required after fixes |
The reviewer communicates the outcome within a few business days after the demo.
7. Ongoing Obligations
Certification is not one-time. Published apps must stay compliant.
7.1 Changes that require re-certification
Submit an updated certification document (and usually a new demo) when you:
- Add new OAuth scopes or webhook subscriptions
- Start storing a new category of personal data or change retention periods
- Add a new third-party data processor
- Make significant changes to core functionality (new integrations, payment handling, etc.)
- Transfer the app to a different developer or company
Minor bug fixes and UI changes do not require re-certification, but do notify the Camping Care team!
7.2 Security incidents
If you discover a security incident, data breach, or critical bug, notify Camping.care at support@camping.care within 24 hours. Failure to report may result in immediate suspension.
7.3 Support & Availability
- Respond to operator support requests within 5 business days.
- Notify Camping Care at least 7 days in advance of planned maintenance.
- Keep your app compatible with the current Camping Care API version.
8. Submitting for Review
- Email
support@camping.carewith the subject lineApp Certification - [Your App Name], attaching or linking your completed publishing document and privacy policy. - The team will respond to schedule the live demo.
- After a successful demo, your app will be reviewed internally and published.
Questions? Reach out at support@camping.care or visit the Developer Docs.