This is the example of the user registration and file post via mongodb stitch webhook: (So in this case you can just use fetch to execute proper webhook) exports = function(payload) { const request = EJSON.parse(payload.body.text()); const http = context.services.get("<app-title>"); const owner = context.values.get("<username-of-the-app-owner>"); const apiKey = context.values.get("<api-key>"); return http.post({ url: "https://stitch.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login", body: JSON.stringify({ username: owner, apiKey: apiKey }) }).then(response => EJSON.parse(response.body.text()).access_token).then(accessToken => { return http.post({ url: "https://stitch.mongodb.com/api/admin/v3.0/groups/<group-id>/apps/<app-id>/users", headers: { Authorization: ["Bearer " + accessToken] }, body: JSON.stringify({ email: request.useremail, password: request.userpass }) }); }); }; This is the one that uses aws s3 service: exports = function(payload) { //base64EncodedImage, bucket, fileName, fileType const body = EJSON.parse(payload.body.text()); // Convert the base64 encoded image string to a BSON Binary object const binaryImageData = BSON.Binary.fromBase64(body.picture, 0); // Instantiate an S3 service client const s3Service = context.services.get('<aws-s3-service-title>').s3('<location>'); // Put the object to S3 return s3Service.PutObject({ 'Bucket': '<aws-bucket-title>', 'Key': body.fileName, 'ContentType': body.fileType, 'Body': binaryImageData }) .then(putObjectOutput => { // console.log(putObjectOutput); // putObjectOutput: { // ETag: <string>, // The object's S3 entity tag // } return putObjectOutput; }) .catch(console.error); // return body; };