Discussions

Ask a Question

Invocing payment terms

Hey, I'm just wondering if there is a way to change my serviceM8 invoice due date to 10 days from job completion/dispatch of invoice. I know you go into settings > preferences > invoicing > invoicing terms but there are only options for COD, Pre paid, 7, 14 and 30 days. I know you can make a specific one for each client but just wondering if theres an easier solution.

How to get the job details from ServiceM8 to Zoho CRM?

Hi folks, I'm trying to push the job details from ServiceM8 to Zoho CRM when a job is created. However, I'm not sure what endpoint to use to get the **Email, Name, Phone, and Mobile**. This one is a good example, however, it does not have the above details I need: **curl -u email:password "<https://api.servicem8.com/api_1.0/job.json?%24filter=company_uuid%20eq%20'10420f98-7626-4405-bf43-043f1036623b'">** Also, if you can please suggest a way to get the job details pushed to Zoho CRM (Webhook, Rest API, etc), I would highly appreciate it. I'm not a programmer, so every step that I take here would require me a lot of research. Please make it layman's. Thank you!

Can I know which API endpoint I have to use to remove the job from the queue?

Can I know which API endpoint I have to use to remove the job from the queue?

Form Response API

Hi, I need your help regarding the form response: 1. I want to capture "Job Id" when the form submit (example: When a form is submit using JobId=2141 then I want to get that Id in a JSON response when a form submit. 2. How can I send email using a specific jobID

Oauth2

Can someone please help me. I need just the oauth2 steps to add to the start of my excel power queries as now 2 factor has been implemented they no longer work with just basic private log in. This below is what I have so far and it returns the jobs in the power query window but will not upload to worksheet as the down load has discontinued due to this error in the token response: DataSource.Error: Web.Contents with the Content option is only supported when connecting anonymously. Details: DataSourceKind=Web DataSourcePath=<https://api.servicem8.com/oauth/authorize> And this error at end of query: 'We couldn't authenticate with the credentials provided. Please try again.' Query: let // Get the API Token api_url = "<https://api.servicem8.com/">, token_path = "oauth/authorize", ClientID = "588360", Secret = "0874cda820434972bf572069342b53db", ``` EncodedCredentials = "Basic " & Binary.ToText(Text.ToBinary(ClientID & ":" & Secret), BinaryEncoding.Base64), Token_Response = Json.Document(Web.Contents(api_url, [ RelativePath = token_path, Headers = [#"Content-Type"="application/x-www-form-urlencoded",#"Authorization"=EncodedCredentials], Content=Text.ToBinary("grant_type=client_credentials") ] ) ), // Get the token from the API response token = Token_Response[access_token], ``` // Query the API for Transactions between startDate and endDate and return all fields path = "api_1.0/job", endDate = "2023-09-17 00:00:00", startDate= "2023-09-11 23:59:59", fields = "all", ``` data= Json.Document(Web.Contents("https://api.servicem8.com/api_1.0/job.json?%24filter=active%20eq%20%271%27")), #"Converted to Table" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"uuid", "date", "job_address", "work_done_description", "generated_job_id", "completion_date", "company_uuid", "payment_processed", "total_invoice_amount", "purchase_order_number", "status"}, {"Column1.uuid", "Column1.date", "Column1.job_address", "Column1.work_done_description", "Column1.generated_job_id", "Column1.completion_date", "Column1.company_uuid", "Column1.payment_processed", "Column1.total_invoice_amount", "Column1.purchase_order_number", "Column1.status"}) ``` in #"Expanded Column1"

Return Paramenters

In the response body where you create a job it returns an ok code. It doesn't give the UUIUD or the Job number so we can't map it back to anything. This is severely limited what am I missing when I create a new job how can I see what job number was allocated?

Zapier Price

Hey, At the moment we use zapier to create jobs in service m8 when they have been won by the sales team in another CRM. It creates a new quote and can add name,phone,email etc. but there is no option to move the price over. Is there a way to make this possible?

When using the api to add an attachment to a job it is marked as inactive and is not showing in the job

Even using the API reference to test is as show here has the same results var options = new RestClientOptions("<https://api.servicem8.com/api_1.0/attachment.json")>; var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/json"); request.AddHeader("authorization", "Basic REDACTED"); request.AddJsonBody("{\"active\":1,\"related_object\":\"Job\",\"related_object_uuid\":\"98e0214e-6061-4437-bfde-206884498f5b\",\"attachment_name\":\"TV Version.png\",\"file_type\":\".png\",\"attachment_source\":\"M:\\\\RFMS\\\\Swift\\\\\",\"uuid\":\"4429a30b-c2af-450c-983b-20688a951e4b\"}", false); var response = await client.PostAsync(request); Console.WriteLine("{0}", response.Content);

Webhooks

Using the API to intergrate a 3rd party schedule Is it possible to have the option for the Job webhook to be fired on a Job Update or Job Change? Their Zapier app only fires on New Jobs for servicem8

Calling the job material list via API (Python/Zapier)

Hi there, I have a zapier integration that is meant to be calling the job materials list from servicem8 when a job gets assigned to a specific que. I can trigger the action when the job lands in the que and pass it along to my python script which is meant to provide a line item array of all the materials filtered by the uuid of the job which triggered my zap. I am able to return only the first entry in the material list. Any idea why the rest of the array is being truncated? e.g my python script: ``` import requests # 'jobuuid' is the field containing the UUID in the input_data job_uuid = input_data['jobuuid'] url = f"https://api.servicem8.com/api_1.0/jobmaterial.json?%24filter=job_uuid eq {job_uuid}" headers = { "accept": "application/json", "authorization": "Basic MYCREDENTIALS" } response = requests.get(url, headers=headers) if response.status_code == 200: materials_data = response.json() # Return the materials_data to pass it to the next steps in Zap return materials_data else: return { "error": f"Request failed with status code: {response.status_code}" } ``` This is my return: ``` uuid: ccec4318-0077-4082-a309-410abb46e9c5 tax_rate_uuid: da374289-575b-4e78-bb6a-1de9409945cb quantity: 1.0000 name: Bunnings inv. 2016/90315302 price: 61.9800 active: 1 displayed_amount_is_tax_inclusive: 1 displayed_amount: 61.9800 edit_date: 2023-09-19 14:42:36 job_uuid: 5d88a6c0-05c7-434e-86ef-200d2f1ffd6b material_uuid: 16434f99-94d1-408c-aadb-f7337fcddc3b sort_order: 0 cost: 56.3455 displayed_cost: 61.9800 id: RqNp2R6aEc50ExK10lucvpcXishvE2A5 runtime_meta memory_used_mb: 47 duration_ms: 710 logs ``` I was expecting a json array to be returned however I am only getting which ever material is at the top of the list. Really hoping I can generate the full list, would have really useful stock reordering applications. Thanks for any help! Nate