[{"data":1,"prerenderedAt":663},["ShallowReactive",2],{"h4176765932":3,"h1727407585":406,"h17940012":656},{"id":4,"title":5,"body":6,"description":28,"extension":398,"meta":399,"navigation":171,"path":402,"seo":403,"stem":404,"__hash__":405},"docs\u002Fen\u002Ftips\u002F2026\u002F07\u002F16\u002Fliff-url-additional-info.md","Parameters added to the LIFF URL should be read after liff.init()",{"type":7,"value":8,"toc":383},"minimark",[9],[10,11,12,20,25,29,34,47,62,65,68,76,89,95,185,197,207,266,279,296,302,321,325,328,344,373,377],"Tips",{},[13,14,17],"h1",{"id":15,"class":16},"","!mb-4",[18,19],"page-title",{},[21,22],"display-date",{"date":23,"class":24},"2026\u002F07\u002F16","!mb-20",[26,27,28],"p",{},"Did you know that you can add query parameters to LIFF URLs? In this article, we'll introduce a handy way to use parameters added to a LIFF URL, and a tip for reading them.",[30,31,33],"h2",{"id":32},"liff-url-additional-info","You can add additional information to a LIFF URL",[26,35,36,37,46],{},"You can add additional information such as a path, query parameters, and a URL fragment to a ",[38,39,41],"glossary-tooltip",{"glossary-id":40},"liff-url",[42,43,45],"a",{"href":44},"\u002Fglossary\u002F#liff-url","LIFF URL",".",[48,49,50,57],"ul",{},[51,52,53],"li",{},[54,55,56],"code",{},"https:\u002F\u002Fliff.line.me\u002F{liffId}\u002F?store=shibuya",[51,58,59],{},[54,60,61],{},"https:\u002F\u002Fliff.line.me\u002F{liffId}\u002Fsummer2026\u002F#coupon",[26,63,64],{},"The additional information is carried over to the URL of the page that is ultimately displayed. For example, you can distribute QR codes with a different parameter for each store to switch screens, or distinguish the traffic sources of a campaign.",[26,66,67],{},"However, care must be taken regarding the timing of reading additional information, such as parameters.",[30,69,71,72,75],{"id":70},"read-params-after-liff-init","Read parameters after ",[54,73,74],{},"liff.init()"," has finished",[26,77,78,79,82,83,88],{},"The additional information added to a LIFF URL is temporarily stored in a query parameter called ",[54,80,81],{},"liff.state",", and restored to its original form through a redirect that the ",[42,84,86],{"href":85},"\u002Freference\u002Fliff\u002F#initialize-liff-app",[54,87,74],{}," method performs.",[26,90,91,92,94],{},"For example, when ",[54,93,56],{}," is accessed, the following is a typical mistake:",[96,97,101],"pre",{"className":98,"code":99,"language":100,"meta":15,"style":15},"language-javascript shiki shiki-themes github-dark-default","\u002F\u002F Bad example: reading the URL without waiting for liff.init() to complete\nconst params = new URLSearchParams(location.search);\nconst store = params.get(\"store\"); \u002F\u002F May be null\n\nliff.init({ liffId: myLiffId });\n","javascript",[54,102,103,112,137,166,173],{"__ignoreMap":15},[104,105,108],"span",{"class":106,"line":107},"line",1,[104,109,111],{"class":110},"sH3jZ","\u002F\u002F Bad example: reading the URL without waiting for liff.init() to complete\n",[104,113,115,119,123,126,129,133],{"class":106,"line":114},2,[104,116,118],{"class":117},"suJrU","const",[104,120,122],{"class":121},"sFSAA"," params",[104,124,125],{"class":117}," =",[104,127,128],{"class":117}," new",[104,130,132],{"class":131},"sc3cj"," URLSearchParams",[104,134,136],{"class":135},"sZEs4","(location.search);\n",[104,138,140,142,145,147,150,153,156,160,163],{"class":106,"line":139},3,[104,141,118],{"class":117},[104,143,144],{"class":121}," store",[104,146,125],{"class":117},[104,148,149],{"class":135}," params.",[104,151,152],{"class":131},"get",[104,154,155],{"class":135},"(",[104,157,159],{"class":158},"s9uIt","\"store\"",[104,161,162],{"class":135},"); ",[104,164,165],{"class":110},"\u002F\u002F May be null\n",[104,167,169],{"class":106,"line":168},4,[104,170,172],{"emptyLinePlaceholder":171},true,"\n",[104,174,176,179,182],{"class":106,"line":175},5,[104,177,178],{"class":135},"liff.",[104,180,181],{"class":131},"init",[104,183,184],{"class":135},"({ liffId: myLiffId });\n",[26,186,187,190,191,194,195,46],{},[54,188,189],{},"store"," may be ",[54,192,193],{},"null"," because the additional information is still stored in ",[54,196,81],{},[26,198,199,200,203,204,206],{},"So, read the URL after the ",[54,201,202],{},"Promise"," object returned by the ",[54,205,74],{}," method is resolved:",[96,208,210],{"className":98,"code":209,"language":100,"meta":15,"style":15},"await liff.init({ liffId: myLiffId });\n\n\u002F\u002F You can read the parameters after liff.init() has finished.\nconst params = new URLSearchParams(location.search);\nconst store = params.get(\"store\");\n",[54,211,212,224,228,233,247],{"__ignoreMap":15},[104,213,214,217,220,222],{"class":106,"line":107},[104,215,216],{"class":117},"await",[104,218,219],{"class":135}," liff.",[104,221,181],{"class":131},[104,223,184],{"class":135},[104,225,226],{"class":106,"line":114},[104,227,172],{"emptyLinePlaceholder":171},[104,229,230],{"class":106,"line":139},[104,231,232],{"class":110},"\u002F\u002F You can read the parameters after liff.init() has finished.\n",[104,234,235,237,239,241,243,245],{"class":106,"line":168},[104,236,118],{"class":117},[104,238,122],{"class":121},[104,240,125],{"class":117},[104,242,128],{"class":117},[104,244,132],{"class":131},[104,246,136],{"class":135},[104,248,249,251,253,255,257,259,261,263],{"class":106,"line":175},[104,250,118],{"class":117},[104,252,144],{"class":121},[104,254,125],{"class":117},[104,256,149],{"class":135},[104,258,152],{"class":131},[104,260,155],{"class":135},[104,262,159],{"class":158},[104,264,265],{"class":135},");\n",[26,267,268,269,271,272,275,276,46],{},"The same applies to paths and URL fragments: once ",[54,270,74],{}," has finished, you can read them from ",[54,273,274],{},"location.pathname"," and ",[54,277,278],{},"location.hash",[26,280,281,282,284,285,287,288,295],{},"Rewriting the URL is even more serious. If you change the URL or perform a server-side redirect before the ",[54,283,202],{}," object is resolved, the LIFF app may not open properly. Libraries that manipulate the URL at load time, such as SPA routers and analytics tags, should also be initialized after ",[54,286,74],{}," has finished. For more information, see ",[42,289,291,292,294],{"href":290},"\u002Freference\u002Fliff\u002F#initializing-liff-app-notes-3","Process URL changes after ",[54,293,74],{}," completes"," in the LIFF API reference.",[30,297,299,300,15],{"id":298},"liff-prefixed-params","Don't modify query parameters starting with ",[54,301,178],{},[26,303,304,305,307,308,310,311,46],{},"Query parameters starting with ",[54,306,178],{},", such as ",[54,309,81],{},", are pieces of information that the LIFF SDK uses for initialization and LIFF-to-LIFF transitions. Changing or deleting them may prevent your LIFF app from working properly, so leave them untouched",[312,313,314],"sup",{},[42,315,320],{"href":316,"ariaDescribedBy":317,"dataFootnoteRef":15,"id":319},"#user-content-fn-liff-query-params",[318],"footnote-label","user-content-fnref-liff-query-params","1",[30,322,324],{"id":323},"wrap-up","Wrap-up",[26,326,327],{},"For more information about the behavior introduced in this article, see the following documentation:",[48,329,330,337],{},[51,331,332,336],{},[42,333,335],{"href":334},"\u002Fdocs\u002Fliff\u002Fopening-liff-app\u002F#redirect-flow","Behaviors from accessing the LIFF URL to opening the LIFF app"," in the LIFF documentation",[51,338,339,343],{},[42,340,341],{"href":85},[54,342,74],{}," in the LIFF API reference",[345,346,349,354],"section",{"className":347,"dataFootnotes":15},[348],"footnotes",[30,350,353],{"className":351,"id":318},[352],"sr-only","Footnotes",[355,356,357],"ol",{},[51,358,360,361,365,366],{"id":359},"user-content-fn-liff-query-params","For more information, see ",[42,362,364],{"href":363},"\u002Fdocs\u002Fliff\u002Fdeveloping-liff-apps\u002F#initializing-liff-app","Initializing the LIFF app"," in the LIFF documentation. ",[42,367,372],{"href":368,"ariaLabel":369,"className":370,"dataFootnoteBackref":15},"#user-content-fnref-liff-query-params","Back to reference 1",[371],"data-footnote-backref","↩",[374,375,376],"style",{},"html pre.shiki code .sH3jZ, html code.shiki .sH3jZ{--shiki-default:#8B949E}html pre.shiki code .suJrU, html code.shiki .suJrU{--shiki-default:#FF7B72}html pre.shiki code .sFSAA, html code.shiki .sFSAA{--shiki-default:#79C0FF}html pre.shiki code .sc3cj, html code.shiki .sc3cj{--shiki-default:#D2A8FF}html pre.shiki code .sZEs4, html code.shiki .sZEs4{--shiki-default:#E6EDF3}html pre.shiki code .s9uIt, html code.shiki .s9uIt{--shiki-default:#A5D6FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",[378,379],"tags",{"tags":380,"lang":381,"section":382},"liff","en","tips",{"title":15,"searchDepth":168,"depth":168,"links":384},[385,388,391,394,397],{"id":386,"depth":114,"text":387},"you-can-add-additional-information-to-a-liff-url-liff-url-additional-info","You can add additional information to a LIFF URL {#liff-url-additional-info}",{"id":389,"depth":114,"text":390},"read-parameters-after-liffinit-has-finished-read-params-after-liff-init","Read parameters after liff.init() has finished {#read-params-after-liff-init}",{"id":392,"depth":114,"text":393},"dont-modify-query-parameters-starting-with-liff-liff-prefixed-params","Don't modify query parameters starting with liff. {#liff-prefixed-params}",{"id":395,"depth":114,"text":396},"wrap-up-wrap-up","Wrap-up {#wrap-up}",{"id":318,"depth":114,"text":353},"md",{"date":400,"tags":380,"locale":381,"sidebar":401},"2026-07-16 00:00 UTC",false,"\u002Fen\u002Ftips\u002F2026\u002F07\u002F16\u002Fliff-url-additional-info",{"title":5,"description":28},"en\u002Ftips\u002F2026\u002F07\u002F16\u002Fliff-url-additional-info","tQj6xd7ds_dhg48_pPFkWMl9emZkqos_lY8tk7q6AXQ",{"id":4,"title":5,"body":407,"description":28,"extension":398,"meta":654,"navigation":171,"path":402,"seo":655,"stem":404,"__hash__":405},{"type":7,"value":408,"toc":647},[409],[10,410,411,415,417,419,421,427,437,439,441,445,453,457,511,519,525,579,587,597,601,612,614,616,628,643,645],{},[13,412,413],{"id":15,"class":16},[18,414],{},[21,416],{"date":23,"class":24},[26,418,28],{},[30,420,33],{"id":32},[26,422,36,423,46],{},[38,424,425],{"glossary-id":40},[42,426,45],{"href":44},[48,428,429,433],{},[51,430,431],{},[54,432,56],{},[51,434,435],{},[54,436,61],{},[26,438,64],{},[26,440,67],{},[30,442,71,443,75],{"id":70},[54,444,74],{},[26,446,78,447,82,449,88],{},[54,448,81],{},[42,450,451],{"href":85},[54,452,74],{},[26,454,91,455,94],{},[54,456,56],{},[96,458,459],{"className":98,"code":99,"language":100,"meta":15,"style":15},[54,460,461,465,479,499,503],{"__ignoreMap":15},[104,462,463],{"class":106,"line":107},[104,464,111],{"class":110},[104,466,467,469,471,473,475,477],{"class":106,"line":114},[104,468,118],{"class":117},[104,470,122],{"class":121},[104,472,125],{"class":117},[104,474,128],{"class":117},[104,476,132],{"class":131},[104,478,136],{"class":135},[104,480,481,483,485,487,489,491,493,495,497],{"class":106,"line":139},[104,482,118],{"class":117},[104,484,144],{"class":121},[104,486,125],{"class":117},[104,488,149],{"class":135},[104,490,152],{"class":131},[104,492,155],{"class":135},[104,494,159],{"class":158},[104,496,162],{"class":135},[104,498,165],{"class":110},[104,500,501],{"class":106,"line":168},[104,502,172],{"emptyLinePlaceholder":171},[104,504,505,507,509],{"class":106,"line":175},[104,506,178],{"class":135},[104,508,181],{"class":131},[104,510,184],{"class":135},[26,512,513,190,515,194,517,46],{},[54,514,189],{},[54,516,193],{},[54,518,81],{},[26,520,199,521,203,523,206],{},[54,522,202],{},[54,524,74],{},[96,526,527],{"className":98,"code":209,"language":100,"meta":15,"style":15},[54,528,529,539,543,547,561],{"__ignoreMap":15},[104,530,531,533,535,537],{"class":106,"line":107},[104,532,216],{"class":117},[104,534,219],{"class":135},[104,536,181],{"class":131},[104,538,184],{"class":135},[104,540,541],{"class":106,"line":114},[104,542,172],{"emptyLinePlaceholder":171},[104,544,545],{"class":106,"line":139},[104,546,232],{"class":110},[104,548,549,551,553,555,557,559],{"class":106,"line":168},[104,550,118],{"class":117},[104,552,122],{"class":121},[104,554,125],{"class":117},[104,556,128],{"class":117},[104,558,132],{"class":131},[104,560,136],{"class":135},[104,562,563,565,567,569,571,573,575,577],{"class":106,"line":175},[104,564,118],{"class":117},[104,566,144],{"class":121},[104,568,125],{"class":117},[104,570,149],{"class":135},[104,572,152],{"class":131},[104,574,155],{"class":135},[104,576,159],{"class":158},[104,578,265],{"class":135},[26,580,268,581,271,583,275,585,46],{},[54,582,74],{},[54,584,274],{},[54,586,278],{},[26,588,281,589,284,591,287,593,295],{},[54,590,202],{},[54,592,74],{},[42,594,291,595,294],{"href":290},[54,596,74],{},[30,598,299,599,15],{"id":298},[54,600,178],{},[26,602,304,603,307,605,310,607,46],{},[54,604,178],{},[54,606,81],{},[312,608,609],{},[42,610,320],{"href":316,"ariaDescribedBy":611,"dataFootnoteRef":15,"id":319},[318],[30,613,324],{"id":323},[26,615,327],{},[48,617,618,622],{},[51,619,620,336],{},[42,621,335],{"href":334},[51,623,624,343],{},[42,625,626],{"href":85},[54,627,74],{},[345,629,631,634],{"className":630,"dataFootnotes":15},[348],[30,632,353],{"className":633,"id":318},[352],[355,635,636],{},[51,637,360,638,365,640],{"id":359},[42,639,364],{"href":363},[42,641,372],{"href":368,"ariaLabel":369,"className":642,"dataFootnoteBackref":15},[371],[374,644,376],{},[378,646],{"tags":380,"lang":381,"section":382},{"title":15,"searchDepth":168,"depth":168,"links":648},[649,650,651,652,653],{"id":386,"depth":114,"text":387},{"id":389,"depth":114,"text":390},{"id":392,"depth":114,"text":393},{"id":395,"depth":114,"text":396},{"id":318,"depth":114,"text":353},{"date":400,"tags":380,"locale":381,"sidebar":401},{"title":5,"description":28},[657,658,660,662],{"id":32,"depth":114,"text":33},{"id":70,"depth":114,"text":659},"Read parameters after liff.init() has finished",{"id":298,"depth":114,"text":661},"Don't modify query parameters starting with liff.",{"id":323,"depth":114,"text":324},1784768815671]