



Have any questions? We’re here to help You
Design your webhook receiver to handle duplicates and out-of-order webhooks, as network issues or retries can cause both scenarios. Keep the receiver lightweight—ideally writing incoming webhooks to a queue or reliable storage—then process them asynchronously. This prevents timeouts and allows your system to handle high-volume webhook spikes. Respond with a 200 status code immediately after receiving the webhook, before processing begins. Implement idempotency by tracking processed webhook IDs and skipping duplicates. Use constant-time comparison for signature verification to prevent timing attacks. If webhook processing fails, log the error but still return 200 to prevent unnecessary retries. Set up monitoring and alerts for webhook failures so you can investigate issues promptly. For critical workflows, combine webhooks with periodic polling as a fallback mechanism.
Makini uses standard HTTP status codes and structured error responses. Error responses include an error code (e.g., `AUTHENTICATION_FAILED`, `RATE_LIMIT_EXCEEDED`), error type for categorization, a human-readable error message, and a unique request ID for support inquiries. Common status codes include 400 for invalid requests, 401 for authentication failures, 403 for permission issues, 429 for rate limiting, 500 for server errors, and 503 for service unavailability. Use the error code for programmatic error handling rather than parsing error messages. The request ID helps our support team quickly identify and investigate specific issues.
Connection-specific errors often relate to system configuration, permissions, or connectivity issues. Common scenarios include: the system is offline or unreachable, credentials have expired, API rate limits on the source system, or permission changes in the source system. Use the connection status endpoint to check connection health before making API calls. Implement circuit breaker patterns—if a connection repeatedly fails, temporarily stop making requests to avoid cascading failures. Log connection-specific errors separately to identify problematic connections. When errors occur, check if the issue affects all operations or specific entity types, which helps narrow down permission or configuration issues. For on-premises systems, verify network connectivity and firewall rules. Contact support if connection errors persist, providing the connection ID and affected operations.
Yes, Makini supports write operations including creating, updating, and in some cases deleting records in connected systems. Common write operations include creating purchase orders, updating work order status, modifying inventory levels, and creating vendor records. Write support varies by system and entity type—core entities like purchase orders have comprehensive write support across major systems, while more specialized entities may have limited write support in some systems. Write operations use the same unified API, so the code to create a purchase order in SAP is identical to creating one in NetSuite. Validate write requirements during implementation to ensure your target systems support needed operations.
