Using PayPal's current API I've created a simple Product:
{
"id" : "A-001",
"name": "A Service",
"description": "Video streaming service",
"type": "SERVICE",
"category": "SOFTWARE"
}
Also created a Plan, which is tiered based on Quantity
{
"product_id" : "A-001",
"name": "Default Plan",
"description": "Plan with regular and trial payment definitions.",
"quantity_supported" : true,
"billing_cycles": [
{
"frequency": {
"interval_unit": "MONTH",
"interval_count": 1
},
"tenure_type": "TRIAL",
"sequence": 1,
"total_cycles": 1
},
{
"frequency": {
"interval_unit": "MONTH",
"interval_count": 1
},
"tenure_type": "REGULAR",
"sequence": 2,
"total_cycles": 12,
"pricing_scheme": {
"pricing_model" : "TIERED",
"version" : 1,
"tiers": [{
"starting_quantity": 1,
"ending_quantity": 499,
"amount": { "currency_code":"USD", "value":0.55}
},
{
"starting_quantity": 500,
"ending_quantity": 999,
"amount": { "currency_code":"USD", "value":0.5}
},
{
"starting_quantity": 1000,
"ending_quantity": 2499,
"amount": { "currency_code":"USD", "value":0.46}
},
{
"starting_quantity": 2500,
"amount": { "currency_code":"USD", "value":0.37}
}
]
}
}
],
"payment_preferences": {
"auto_bill_outstanding": true,
"setup_fee": {
"value": "10",
"currency_code": "USD"
},
"setup_fee_failure_action": "CONTINUE",
"payment_failure_threshold": 3
},
"taxes": {
"percentage": "10",
"inclusive": false
}
}
Now, I try to create a Subscription to the Plan:
{
"plan_id": "P-16786052YT8021220MAMUCDY",
"start_time": "2021-03-01T00:00:00Z",
"quantity": "20",
"shipping_amount": {
"currency_code": "USD",
"value": "0.00"
},
"subscriber": {
"name": {
"given_name": "John",
"surname": "Doe"
},
"email_address": "customer#example.com",
"shipping_address": {
"name": {
"full_name": "John Doe"
},
"address": {
"address_line_1": "2211 N First Street",
"address_line_2": "Building 17",
"admin_area_2": "San Jose",
"admin_area_1": "CA",
"postal_code": "95131",
"country_code": "US"
}
}
},
"application_context": {
"brand_name": "walmart",
"locale": "en-US",
"shipping_preference": "SET_PROVIDED_ADDRESS",
"user_action": "SUBSCRIBE_NOW",
"payment_method": {
"payer_selected": "PAYPAL",
"payee_preferred": "IMMEDIATE_PAYMENT_REQUIRED"
},
"return_url": "https://example.com/returnUrl",
"cancel_url": "https://example.com/cancelUrl"
}
}
But I get an Error response:
{
"name": "UNPROCESSABLE_ENTITY",
"message": "The requested action could not be performed, semantically incorrect, or failed business validation.",
"debug_id": "658174d246c0b",
"details": [
{
"issue": "SUBSCRIPTION_CANNOT_HAVE_QUANTITY",
"description": "Subscription can't have quantity as the plan does not support quantity."
}
],
"links": [
{
"href": "https://developer.paypal.com/docs/api/v1/billing/subscriptions#UNPROCESSABLE_ENTITY",
"rel": "information_link",
"method": "GET"
}
]
}
Why do I get this error when my Plan clearly states "quantity_supported" : true, ?
In my case I had forgotten to modify the PayPal-Request-Id from a previous Plan creation (which didn't allow Quantity), so the Plan with details above wasn't being created
Since two weeks we are trying to implement transaction api v3. with Google
payment option. Once we did a transaction the receipt has been displayed.
When we pressed "order" button we got confirmation that the transaction is
being confirmed but in developer Dotpay panel there were no visible
payments.
After a few transactions action stopped displaying the receipt and it
informed that "something went wrong. Try again later". When we removed googlePaymentOption from
TransactionDecision the receipt has been displayed but we were still not
able to make any transactions.
It lasted for a few days and after that we were able to make transactions again but there were
still no payments visible.
Can you please have a look?
Hereby you can find our transaction logs:
{
"conversationToken": "[\"_actions_on_google\",\"podsumowanie\",\"rezerwuj_dostawe\",\"zmien_zamowienie_lista\",\"start_index\",\"modyfikuj_koszyk\",\"dodaj_produkt\"]",
"expectUserResponse": true,
"expectedInputs": [{
"inputPrompt": {
"richInitialPrompt": {
"items": [{
"simpleResponse": {
"textToSpeech": "Transaction Decision Placeholder."
}
}]
}
},
"possibleIntents": [{
"intent": "actions.intent.TRANSACTION_DECISION",
"inputValueData": {
"#type": "type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec",
"order": {
"merchantOrderId": "9g1blj8rmvo",
"userVisibleOrderId": "9g1blj8rmvo",
"buyerInfo": {
"email": "janedoe#gmail.com",
"firstName": "Jane",
"lastName": "Doe",
"displayName": "Jane Doe"
},
"createTime": "2020-06-09T14:02:08.812Z",
"lastUpdateTime": "2020-06-09T14:02:08.812Z",
"transactionMerchant": {
"id": "book_store_1",
"name": "Book Store"
},
"contents": {
"lineItems": [{
"id": "memoirs_4",
"name": "Our memoirs",
"priceAttributes": [{
"type": "REGULAR",
"name": "Item Price",
"state": "ACTUAL",
"amount": {
"currencyCode": "PLN",
"amountInMicros": "1000000"
},
"taxIncluded": true
}, {
"type": "TOTAL",
"name": "Total Price",
"state": "ACTUAL",
"amount": {
"currencyCode": "PLN",
"amountInMicros": "1000000"
},
"taxIncluded": true
}],
"notes": ["Special introduction by author."],
"purchase": {
"quantity": 1
}
}]
},
"priceAttributes": [{
"type": "SUBTOTAL",
"name": "Subtotal",
"state": "ESTIMATE",
"amount": {
"currencyCode": "PLN",
"amountInMicros": "1000000"
},
"taxIncluded": true
}, {
"type": "DELIVERY",
"name": "Delivery",
"state": "ACTUAL",
"amount": {
"currencyCode": "PLN"
},
"taxIncluded": true
}, {
"type": "TAX",
"name": "Tax",
"state": "ESTIMATE",
"amount": {
"currencyCode": "PLN"
},
"taxIncluded": true
}, {
"type": "TOTAL",
"name": "Total Price",
"state": "ESTIMATE",
"amount": {
"currencyCode": "PLN",
"amountInMicros": "1000000"
},
"taxIncluded": true
}],
"followUpActions": [{
"type": "VIEW_DETAILS",
"title": "View details",
"openUrlAction": {
"url": "http://example.com"
}
}, {
"type": "CALL",
"title": "Call us",
"openUrlAction": {
"url": "tel:+16501112222"
}
}, {
"type": "EMAIL",
"title": "Email us",
"openUrlAction": {
"url": "mailto:person#example.com"
}
}],
"termsOfServiceUrl": "http://www.example.com",
"note": "The Memoir collection",
"purchase": {
"status": "CREATED",
"type": "RETAIL",
"returnsInfo": {
"daysToReturn": 1,
"policyUrl": "http://www.example.com"
},
"fulfillmentInfo": {
"id": "FULFILLMENT_SERVICE_ID",
"fulfillmentType": "DELIVERY",
"expectedFulfillmentTime": {
"timeIso8601": "2025-09-25T18:00:00.877Z"
},
"price": {
"type": "REGULAR",
"name": "Delivery Price",
"state": "ACTUAL",
"amount": {
"currencyCode": "PLN"
},
"taxIncluded": true
},
"fulfillmentContact": {
"email": "janedoe#gmail.com",
"firstName": "Jane",
"lastName": "Doe",
"displayName": "Jane Doe"
}
},
"purchaseLocationType": "ONLINE_PURCHASE",
"userVisibleStatusLabel": "CREATED"
}
},
"orderOptions": {
"userInfoOptions": {
"userInfoProperties": ["EMAIL"]
}
},
"paymentParameters": {
"googlePaymentOption": {
"facilitationSpec": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"Frisco\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"MASTERCARD\",\"VISA\"]},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"dotpay\",\"gatewayMerchantId\":\"705777\"}}}],\"transactionInfo\":{\"totalPriceStatus\":\"FINAL\",\"totalPrice\":\"1.00\",\"currencyCode\":\"PLN\"}}"
}
},
"presentationOptions": {
"actionDisplayName": "PLACE_ORDER"
}
}
}],
"speechBiasingHints": ["$usun", "$dalej", "$events", "$wroc", "$product", "$deleteProduct", "$sztuka", "$dodaj", "$ilosc", "$produkty", "$deleteOrder"]
}],
"responseMetadata": {
"status": {
"message": "Success (200)"
},
"queryMatchInfo": {
"queryMatched": true,
"intent": "777d19a8-c59a-46d2-ae22-212827b5726e"
}
}
} ```
Currently, Google is working with a limited number of partners that can get access to the production Google Pay API. If you're not one of those partners, you're welcome to read the documentation and test the integration using the sandbox environment.
https://developers.google.com/assistant/transactions/physical/dev-guide-physical-gpay
If you are indeed one of these partners, please reach out to your Google contact.
Having the following record
{
"name": "
Festões Plástico, 12mt x 17cm - Festas Populares",
"categories": [
"Festas",
"Casamentos",
"Decorações"
],
"hierarchicalCategories": {
"lvl0": "Festas",
"lvl1": "Festas > Casamentos",
"lvl2": "Festas > Casamentos > Decorações"
},
"description": "",
"brand": "Misterius",
"price": 14.94,
"stock": "Disponível",
"prices": [
{
"value": 12,
"type": "specificValue",
"family": "fatos",
"subfamily": "example"
},
{
"value": 13,
"type": "specificValue13",
"family": "fatos13",
"subfamily": "example13"
},
{
"value": 14,
"type": "specificValue14",
"family": "fatos14",
"subfamily": "example14"
},
{
"value": 15,
"type": "specificValue15",
"family": "fatos15",
"subfamily": "example15"
},
{
"value": 16,
"type": "specificValue16",
"family": "fatos16",
"subfamily": "example16"
}
],
"color": [
{
"name": "Amarelo",
"label": "Amarelo,#FFFF00",
"hexa": "#FFFF00"
},
{
"name": "Azul",
"label": "Azul,#0000FF",
"hexa": "#0000FF"
},
{
"name": "Branco",
"label": "Branco,#FFFFFF",
"hexa": "#FFFFFF"
},
{
"name": "Laranja",
"label": "Laranja,#FFA500",
"hexa": "#FFA500"
},
{
"name": "Verde Escuro",
"label": "Verde Escuro,#006400",
"hexa": "#006400"
},
{
"name": "Vermelho",
"label": "Vermelho,#FF0000",
"hexa": "#FF0000"
}
],
"specialcategorie": "",
"reference": "3546",
"rating": 0,
"free_shipping": false,
"popularity": 0,
"objectID": "30"
}
Now by searching for "Festas Populares" will return the record and its attributes, is it possible to also filter for one attribute array as "prices" to only return one json. for example "prices.type"="specificValue14" and "family"="fatos14" and "family"="fatos" and "subfamily"="example"
{
“value”: 14,
“type”: “specificValue14”,
“family”: “fatos14”,
“subfamily”: “example14”
}
the record return would be:
{
"name": "
Festões Plástico, 12mt x 17cm - Festas Populares",
"categories": [
"Festas",
"Casamentos",
"Decorações"
],
"hierarchicalCategories": {
"lvl0": "Festas",
"lvl1": "Festas > Casamentos",
"lvl2": "Festas > Casamentos > Decorações"
},
"description": "",
"brand": "Misterius",
"price": 14.94,
"stock": "Disponível",
"prices": [
{
"value": 14,
"type": "specificValue14",
"family": "fatos14",
"subfamily": "example14"
}
],
"color": [
{
"name": "Amarelo",
"label": "Amarelo,#FFFF00",
"hexa": "#FFFF00"
},
{
"name": "Azul",
"label": "Azul,#0000FF",
"hexa": "#0000FF"
},
{
"name": "Branco",
"label": "Branco,#FFFFFF",
"hexa": "#FFFFFF"
},
{
"name": "Laranja",
"label": "Laranja,#FFA500",
"hexa": "#FFA500"
},
{
"name": "Verde Escuro",
"label": "Verde Escuro,#006400",
"hexa": "#006400"
},
{
"name": "Vermelho",
"label": "Vermelho,#FF0000",
"hexa": "#FF0000"
}
],
"specialcategorie": "",
"reference": "3546",
"rating": 0,
"free_shipping": false,
"popularity": 0,
"objectID": "30"
}
for some context a product can have multiple prices associated, for a specific user, or one day there is campaign giving discount, etc so for that cases want to filter price associated to the product/record.
No, this is not possible with Algolia. Records are always returned with the attributes specified inside attributesToRetrieve. These attributes are returned in full.
I have a completely static html form with some data using the netlify tag. When I submit it, I get a 200 and see the default success page, but do not see the submission in the Netlify Dashboard. I do see the form was recognized and has an entry in the dashboard, but it shows zero submissions.
Note that my issue is different from a similar question because this is a static form and my content-type is already "application/x-www-form-urlencoded" which was what was wrong in that other case.
I don't see anyone else describing this issue and I can't seem to find anything in the docs that I might be missing. Anyone seen this before and found a solution?
Here's the form:
<form name="registration" method="POST" class="registration-form" data-netlify="true" data-netlify-recaptcha="true">
<H2>Juneteenth Parade Registration Form</H2>
<p>The deadline to register for the parade is Fri. May 31, 2019.</p>
<fieldset>
<legend>CONTACT INFORMATION</legend>
<div class="registration-form">
<label for="name">Organization Name:</label><input type="text" id="name" name="name" required minlength="4" maxlength="128" size="64">
</div>
<div class="registration-form">
<label for="contact">Contact Person:</label><input type="text" id="person" name="person" required minlength="4" maxlength="128" size="64">
</div>
<div class="registration-form">
<label for="address">Organization Address:</label><input type="text" id="address" name="address" required minlength="4" maxlength="128" size="64">
</div>
<div class="registration-form">
<label for="phone">Phone Number:</label><input type="tel" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" placeholder="###-###-####" id="phone" name="phone" required minlength="7" maxlength="28" size="14">
</div>
<div class="registration-form">
<label for="alt_phone">Alternate Phone:</label><input type="tel" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" placeholder="###-###-####" id="alt_phone" name="alt_phone" required minlength="7" maxlength="28" size="14">
</div>
<div class="registration-form">
<label for="email">E-mail Address:</label><input type="email" id="email" name="email" required minlength="4" maxlength="128" size="32">
</div>
</fieldset>
<fieldset>
<legend>PARADE ENTRY</legend>
<div class="description">
<label for="description">Please describe the nature of your parade entry for example; float, people walking together, band, horse and buggy, decorated car, bicycles and banners.</label> <textarea id="description" name="description" rows="3" cols="64">
</textarea>
</div>
<div class="registration-form">
<input type="checkbox" id="music" name="music">
<label for="music">Playing or performing music?</label>
</div>
<div class="number-of-people">
<label for="people">Number of people expected:</label><input type="number" id="email" name="email" required minlength="1" maxlength="4" size="4">
</div>
</fieldset>
<div data-netlify-recaptcha="true"></div>
<input type="submit" value="Submit Registration" class="submit button">
</form>
And here's the request/response:
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.36"
},
"pages": [
{
"startedDateTime": "2019-04-14T21:45:06.072Z",
"id": "page_4",
"title": "https://redacted.netlify.com/",
"pageTimings": {
"onContentLoad": 364.39100000006874,
"onLoad": 418.19699999996374
}
}
],
"entries": [
{
"startedDateTime": "2019-04-14T21:45:06.070Z",
"time": 225.2770000000055,
"request": {
"method": "POST",
"url": "https://redacted.netlify.com/",
"httpVersion": "http/2.0",
"headers": [
{
"name": ":method",
"value": "POST"
},
{
"name": ":authority",
"value": "redacted.netlify.com"
},
{
"name": ":scheme",
"value": "https"
},
{
"name": ":path",
"value": "/"
},
{
"name": "content-length",
"value": "585"
},
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "cache-control",
"value": "no-cache"
},
{
"name": "origin",
"value": "https://redacted.netlify.com"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
},
{
"name": "referer",
"value": "https://redacted.netlify.com/"
},
{
"name": "accept-encoding",
"value": "gzip, deflate, br"
},
{
"name": "accept-language",
"value": "en-US,en;q=0.9"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 585,
"postData": {
"mimeType": "application/x-www-form-urlencoded",
"text": "form-name=registration&name=Test+Org&person=Bill&address=111+Test+Dr.&phone=111-222-3333&alt_phone=444-555-6666&email=me%40example.com&description=This+is+a+test.++++++++++++++++++++++++++++&music=on&email=1&g-recaptcha-response=03AOLTBLTRjCCETaPINwgzeeptXELZzjz9ineERJ18sHv9_Pb4ou7P70RkIz4vqEJPMME01RnXgqSjs-0f_6TUjWEL3QkkFJSd2dThUktYnI5Y-Nwl8fJx4DMU9ZBPuL1MLM-vjOiRf2ZNHU13HxrSUk3ab9j31O4R8wnTtdpG_QiQwKMxZs-pM-_L29YBA1c4HGR1IZJlxGixjk06L50CLzc6cF9y_o6RHiZ8O33hJ_36sgTWEqjeSjZUU9XHRPFkkCUK9x5LK5P5j2HFOEjpA6NbOqHyTtLGUo8CnvgwlLDiovvwASyRD0vmz0gkMTHV1LBsjoAWkSACLz1o5dh2mpdsXVZUfZo-jA",
"params": [
{
"name": "form-name",
"value": "registration"
},
{
"name": "name",
"value": "Test+Org"
},
{
"name": "person",
"value": "Bill"
},
{
"name": "address",
"value": "111+Test+Dr."
},
{
"name": "phone",
"value": "111-222-3333"
},
{
"name": "alt_phone",
"value": "444-555-6666"
},
{
"name": "email",
"value": "me%40example.com"
},
{
"name": "description",
"value": "This+is+a+test.++++++++++++++++++++++++++++"
},
{
"name": "music",
"value": "on"
},
{
"name": "email",
"value": "1"
},
{
"name": "g-recaptcha-response",
"value": "[redacted]"
}
]
}
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0",
"headers": [
{
"name": "status",
"value": "200"
},
{
"name": "content-type",
"value": "text/html"
},
{
"name": "date",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
},
{
"name": "age",
"value": "0"
},
{
"name": "server",
"value": "Netlify"
},
{
"name": "x-nf-request-id",
"value": "0cb00dd4-87f1-42a7-b737-913d0998120e-98519701"
}
],
"cookies": [],
"content": {
"size": 2121,
"mimeType": "text/html",
"text": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\">\n\n <title>Thank you!</title>\n <link href='https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n background: rgb(14, 30, 37);\n color: white;\n overflow: hidden;\n }\n\n h1 {\n margin: 0;\n font-size: 22px;\n line-height: 24px;\n }\n\n .main {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100vh;\n width: 100vw;\n }\n\n .card {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 75%;\n max-width: 364px;\n padding: 24px;\n background: white;\n color: rgb(14, 30, 37);\n border-radius: 8px;\n box-shadow: 0 2px 4px 0 rgba(14, 30, 37, .16);\n }\n\n a {\n margin: 0;\n text-decoration: none;\n font-weight: 600;\n line-height: 24px;\n color: #00ad9f;\n }\n\n a svg {\n position: relative;\n top: 2px;\n }\n\n a:hover,\n a:focus {\n text-decoration: underline;\n color: #007A70;\n }\n\n a:hover svg path{\n fill: #007A70;\n }\n\n p:last-of-type {\n margin: 0;\n }\n </style>\n </head>\n <body>\n\n <div class=\"main\">\n <div class=\"card\">\n <div class=\"header\">\n <h1>Thank you!</h1>\n </div>\n <div class=\"body\">\n\n <p>Your form submission has been received.</p>\n\n <p>\n <a id=\"back-link\" href=\"/\">← Back to our site</a>\n </p>\n </div>\n </div>\n </div>\n <script>\n (function() {\n if (document.referrer && document.location.host && document.referrer.match(new RegExp(\"^https?://\" + document.location.host))) {\n document.getElementById(\"back-link\").setAttribute(\"href\", document.referrer);\n }\n })();\n </script>\n </body>\n</html>\n"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 2210
},
"cache": {},
"timings": {
"blocked": 2.34500000006365,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.16100000000000003,
"wait": 221.8270000000515,
"receive": 0.9439999998903659,
"_blocked_queueing": 1.86600000006365
},
"serverIPAddress": "142.93.122.177",
"_initiator": {
"type": "other"
},
"_priority": "VeryHigh",
"_resourceType": "document",
"connection": "19503",
"pageref": "page_4"
},
{
"startedDateTime": "2019-04-14T21:45:06.311Z",
"time": 126.6409999998271,
"request": {
"method": "GET",
"url": "https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "Referer",
"value": "https://redacted.netlify.com/"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}
],
"queryString": [
{
"name": "family",
"value": "Roboto:400,700"
},
{
"name": "subset",
"value": "latin,latin-ext"
}
],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "strict-transport-security",
"value": "max-age=31536000"
},
{
"name": "content-encoding",
"value": "br"
},
{
"name": "last-modified",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
},
{
"name": "server",
"value": "ESF"
},
{
"name": "access-control-allow-origin",
"value": "*"
},
{
"name": "date",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
},
{
"name": "x-frame-options",
"value": "SAMEORIGIN"
},
{
"name": "content-type",
"value": "text/css; charset=utf-8"
},
{
"name": "status",
"value": "200"
},
{
"name": "alt-svc",
"value": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\""
},
{
"name": "cache-control",
"value": "private, max-age=86400, stale-while-revalidate=604800"
},
{
"name": "timing-allow-origin",
"value": "*"
},
{
"name": "link",
"value": "<https://fonts.gstatic.com>; rel=preconnect; crossorigin"
},
{
"name": "x-xss-protection",
"value": "1; mode=block"
},
{
"name": "expires",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
}
],
"cookies": [],
"content": {
"size": 4498,
"mimeType": "text/css",
"text": "[redacted]"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 854
},
"cache": {},
"timings": {
"blocked": 14.100000000016415,
"dns": 27.329,
"ssl": 46.616,
"connect": 74.052,
"send": 0,
"wait": 10.321999999880063,
"receive": 0.8379999999306165,
"_blocked_queueing": 13.277000000016415
},
"serverIPAddress": "172.217.9.170",
"_initiator": {
"type": "parser",
"url": "https://redacted.netlify.com/",
"lineNumber": 6
},
"_priority": "VeryHigh",
"_resourceType": "stylesheet",
"pageref": "page_4"
},
{
"startedDateTime": "2019-04-14T21:45:06.424Z",
"time": 48.637999999755266,
"request": {
"method": "GET",
"url": "https://fonts.gstatic.com/s/roboto/v19/KFOlCnqEu92Fr1MmWUlfBBc4.woff2",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
{
"name": "Referer",
"value": "https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext"
},
{
"name": "Origin",
"value": "https://redacted.netlify.com"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "date",
"value": "Mon, 25 Mar 2019 20:21:40 GMT"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "last-modified",
"value": "Mon, 25 Mar 2019 20:13:46 GMT"
},
{
"name": "server",
"value": "sffe"
},
{
"name": "age",
"value": "1733006"
},
{
"name": "content-type",
"value": "font/woff2"
},
{
"name": "status",
"value": "200"
},
{
"name": "alt-svc",
"value": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\""
},
{
"name": "cache-control",
"value": "public, max-age=31536000"
},
{
"name": "accept-ranges",
"value": "bytes"
},
{
"name": "timing-allow-origin",
"value": "*"
},
{
"name": "access-control-allow-origin",
"value": "*"
},
{
"name": "content-length",
"value": "15816"
},
{
"name": "x-xss-protection",
"value": "1; mode=block"
},
{
"name": "expires",
"value": "Tue, 24 Mar 2020 20:21:40 GMT"
}
],
"cookies": [],
"content": {
"size": 15816,
"mimeType": "font/woff2",
"text": "[redacted]",
"encoding": "base64"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 15920
},
"cache": {},
"timings": {
"blocked": 2.2409999998616694,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.08200000000000002,
"wait": 45.09700000001289,
"receive": 1.2179999998807034,
"_blocked_queueing": 1.9459999998616695
},
"serverIPAddress": "216.58.194.67",
"_initiator": {
"type": "script",
"stack": {
"callFrames": [
{
"functionName": "",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 20,
"columnNumber": 266
},
{
"functionName": "ready",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 10,
"columnNumber": 196
},
{
"functionName": "B",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 17,
"columnNumber": 6
}
]
}
},
"_priority": "VeryHigh",
"_resourceType": "font",
"pageref": "page_4"
},
{
"startedDateTime": "2019-04-14T21:45:06.431Z",
"time": 53.76699999987977,
"request": {
"method": "GET",
"url": "https://fonts.gstatic.com/s/roboto/v19/KFOmCnqEu92Fr1Mu4mxK.woff2",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
{
"name": "Referer",
"value": "https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext"
},
{
"name": "Origin",
"value": "https://redacted.netlify.com"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "date",
"value": "Mon, 25 Mar 2019 20:21:59 GMT"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "last-modified",
"value": "Mon, 25 Mar 2019 20:12:01 GMT"
},
{
"name": "server",
"value": "sffe"
},
{
"name": "age",
"value": "1732987"
},
{
"name": "content-type",
"value": "font/woff2"
},
{
"name": "status",
"value": "200"
},
{
"name": "alt-svc",
"value": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\""
},
{
"name": "cache-control",
"value": "public, max-age=31536000"
},
{
"name": "accept-ranges",
"value": "bytes"
},
{
"name": "timing-allow-origin",
"value": "*"
},
{
"name": "access-control-allow-origin",
"value": "*"
},
{
"name": "content-length",
"value": "15736"
},
{
"name": "x-xss-protection",
"value": "1; mode=block"
},
{
"name": "expires",
"value": "Tue, 24 Mar 2020 20:21:59 GMT"
}
],
"cookies": [],
"content": {
"size": 15736,
"mimeType": "font/woff2",
"text": "[redacted]",
"encoding": "base64"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 15840
},
"cache": {},
"timings": {
"blocked": 4.55399999966129,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.15599999999999992,
"wait": 39.65100000009211,
"receive": 9.406000000126369,
"_blocked_queueing": 3.0159999996612896
},
"serverIPAddress": "216.58.194.67",
"_initiator": {
"type": "script",
"stack": {
"callFrames": [
{
"functionName": "",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 20,
"columnNumber": 266
},
{
"functionName": "ready",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 10,
"columnNumber": 196
},
{
"functionName": "B",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 17,
"columnNumber": 6
}
]
}
},
"_priority": "VeryHigh",
"_resourceType": "font",
"pageref": "page_4"
}
]
}
}
tl;dr: Make sure your input name attributes are all unique. The submit will fail silently otherwise.
Posting this as an answer to help anyone else who runs into this. It turns out that some form errors, in this case an input with a duplicate name, will appear to submit successfully, but will actually either go to spam or be lost.
To confirm, I created a new form, identical to the first, but with all of the inputs named correctly. The form submitted fine and showed up in the dashboard immediately.
I then changed the last input to have a name already used by another input "email" in this case. The submission appeared to be successful, but the data never showed-up in the dashboard.
Changing the name back to a unique name and trying again submitted successfully and immediately showed up in the dashboard.
Here's what my mistake looked like.
<div class="registration-form">
<label for="email">E-mail Address:</label><input type="email" id="email" name="email" required minlength="4" maxlength="128">
</div>
...
<div class="registration-form">
<input type="number" id="number" name="email" required minlength="1" maxlength="4" size="4" class="number"> <label for="people">Number of people expected?</label>
</div>
I've had a similar issue with a Netlify form - showed as successful but then it wasn't actually submitted. Can you try to switch the data-netlify="true" to just netlify? That fixed the issue for me.
I have this document in my mongodb collection:
{
"_id": "YLRM9Wi7f6tp6qNbS",
"sessionId": "hLDkkJKR4Muik6tbe",
"userId": "ZYoG4cH8HcCDPMDGr",
"shopId": "J8Bhq3uTtdgwZx3rz",
"workflow": {
"status": "",
"workflow": ["String"]
},
"billing": [Object],
"discount": 0,
"tax": 0,
"items": [
{
"_id": "JwR233jD2c4HKeYKq",
"shopId": "J8Bhq3uTtdgwZx3rz",
"productId": "BCTMZ6HTxFSppJESk",
"quantity": 1,
"product": {
"_id": "BCTMZ6HTxFSppJESk",
"title": "Product",
"shopId": "J8Bhq3uTtdgwZx3rz",
"ancestors": [],
"createdAt": "2018-01-12T10:22:18.853Z",
"description": "",
"handle": "product",
"hashtags": [
"rpjCvTBGjhBi2xdro",
"cseCBSSrJ3t8HQSNP"
],
"price": {
"range": "12.99 - 19.99",
"min": 12.99,
"max": 19.99
},
"isVisible": true,
"isLowQuantity": false,
"isSoldOut": false,
"isBackorder": false,
"metafields": [
{
"key": "Material",
"value": "Cotton"
},
{
"key": "Quality",
"value": "Excellent"
}
],
"pageTitle": "",
"type": "simple",
"updatedAt": "2018-01-12T10:22:18.854Z",
"vendor": "Vendor_Name",
"originCountry": "country",
"requiresShipping": true,
"isDeleted": false,
"template": "productDetailSimple",
"workflow": {
"status": "new"
}
},
"variants": {},
"title": "Product",
"type": "simple",
"parcel": {
"weight": 25,
"height": 3,
"width": 10,
"length": 10
},
"shippingMethod": {
"shopId": "J8Bhq3uTtdgwZx3rz",
"shipmentQuotes": [Object],
"shipmentQuotesQueryStatus": {
"requestStatus": "success",
"numOfShippingMethodsFound": 11
},
"_id": "s3EJXrLsZe73RbLiD",
"address": {},
"shipmentMethod": {},
"paymentId": "nyybR5BNvDDrJrtwe",
"items": [
{
"_id": "JwR233jD2c4HKeYKq",
"productId": "BCTMZ6HTxFSppJESk",
"shopId": "J8Bhq3uTtdgwZx3rz",
"variantId": "CJoRBm9vRrorc9mxZ"
}
],
"workflow": {
"status": "new",
"workflow": ["String"]
}
},
"workflow": {
"status": "new",
"workflow": ["String"]
}
}
],
"shipping": [Object],
"email": "johndoe#mail.com",
"cartId": "L6sSGv4NR9rpbDbsd",
"createdAt": "2018-01-12T10:22:18.850Z"
}
The field items is an array of objects, I would like to update just a part of the object specifically the workflow field without touching other part of the objects in items array.
I was able to do this using a loop, but it caused some tests to fail. Is there a better of doing this with using a loop?
Thank you.
You can try findAndModify method.
Traverse to the workflow key ad try to set the value.
Hope this would help.