Scope
This skill is for Domo Custom Connector IDE projects — not Domo App Platform custom app/card builds. Custom connectors run server-side after being published via the Connector Dev Studio.
File Structure
authentication.js— Validates credentials and authenticates with the external APIdataProcessing.js— Fetches and processes data from the external APIREADME.md— Documents available reports and parameters
Key Patterns
Authentication
- Sanitize credential inputs (regex validate API keys/tokens) before use
- Set required headers, then make a lightweight test request to verify credentials
- Call
auth.authenticationSuccess()orauth.authenticationFailed('reason')— never leave authentication ambiguous
Data Processing
- Check
httprequest.getStatusCode()before parsing the response body - Use
datagrid.magicParseJSON(jsonArray)for JSON array responses — avoids manual column mapping - Handle pagination in a
do...whileloop; use the next-page link or cursor from the response as the loop condition - Use
metadata.reportto branch between report types; usemetadata.account.*for credentials
Error Handling
- Catch HTTP errors by status code; try to parse the error body for a human-readable message
- Fall back to the raw response substring if the error body isn't parseable JSON
- Re-throw errors so the connector runtime surfaces them correctly
Rules
- Input sanitization — Always sanitize inputs (API keys, user params) to prevent injection attacks
- Consistent columns — Every row must have the same columns; use
nullfor missing values - Domo library — Use Domo-provided methods (
httprequest,datagrid,auth,metadata); see reference docs - Clear error messages —
auth.authenticationFailed()messages should tell the user what to fix
Code Examples
If you need full boilerplate for authentication, data processing, or error handling patterns, read references/examples.md.
Checklist
authentication.jsvalidates input format and tests credentialsauthentication.jscallsauth.authenticationSuccess()orauth.authenticationFailed()appropriatelydataProcessing.jshandles pagination correctlydataProcessing.jschecks HTTP status codes before parsing JSONdataProcessing.jsusesdatagrid.magicParseJSON()for JSON arrays- All inputs are sanitized
- Error messages are clear and actionable
README.mddocuments all reports/parameters- All rows have consistent column counts